2012-01-12 15 views
2

イムパラメータとしてのJavaクラスの静的フィールドを設定するためにGroovyのクラスでJavaアノテーションを使用しますが、トラブルを持ってしよう:注釈で静的フィールドへのアクセス

注釈を:Id.java

package x.y.annotations; 

import java.lang.annotation.ElementType; 

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.FIELD) 
public @interface Id { 

    public Class<Adapter> adapter(); 

    public Class<Object> targetType(); 

    public String targetAttribute(); 

    public String onDelete(); 

} 

静的フィールドを持つJavaクラス:XPerson.java

package x.y.static.domain; 

public class XPerson { 

    public static String ID; 

} 

とGroovyクラス、問題が発生します。

012 Person.groovyを

グルービー:

package x.y.domain 

import x.y.annotations.Id 
import x.y.static.domain.XPerson 

class Person { 

    @Id(adapter = Adapter, targetType = XPerson, targetAttribute = XPerson.ID, onDelete = "delete") 
    long id 
} 

Eclipseはで「targetAttribute = XPerson.ID」部分をマーク期待「xydomain.XPerson.ID」java.lang.String型のインライン一定ではないでプロパティ式であることが@ xyannotations.Id

また、「XPerson。@ ID」やIDフィールドのゲッターを定義してみましたが、何も助けてくれませんでした。

ヒントがあれば大丈夫です。

よろしく、

マイケル

答えて

3

注釈値は、コンパイル時constant expressionsであってもよいです。フィールドをfinalにすることはオプションです。 (スニペットが示すようにフィールドを静的イニシャライザ/ etcに初期化することはできません)。

5

Groovy JIRAで関連する問題が見つかりました。これはバグです。うまくいくはずです。 https://issues.apache.org/jira/browse/GROOVY-3278

+0

こんにちは、正確には "うまくいく"とは何ですか?それはまだバグです。 –

+0

groovyにはバグがあるので、質問に記載されていることはうまくいくはずですが、そうではありません –

関連する問題