74

注釈を作成します

public @interface MyAnnotation {
}

テストオブジェクトのフィールドに配置しました

public class TestObject {

    @MyAnnotation 
    final private Outlook outlook;
    @MyAnnotation 
    final private Temperature temperature;
     ...
}

今、私はすべてのフィールドのリストを取得したいMyAnnotation.

for(Field field  : TestObject.class.getDeclaredFields())
{
    if (field.isAnnotationPresent(MyAnnotation.class))
        {
              //do action
        }
}

しかし、私のブロック do アクションは決して実行されないようで、次のコードが 0 を返すため、フィールドには注釈がありません。

TestObject.class.getDeclaredField("outlook").getAnnotations().length;

誰かが私を助けて、私が間違っていることを教えてくれますか?

4

2 に答える 2

81

注釈を実行時に使用可能としてマークする必要があります。以下を注釈コードに追加します。

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}
于 2013-05-16T10:52:30.960 に答える