1. ホーム
  2. java

リフレクションを使用して、アノテーションを持つフィールドのリストを取得する

2023-11-05 14:14:18

質問

アノテーションを作成する

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;

誰か私を助け、私が間違っている何を教えてもらえますか?

どのように解決するには?

アノテーションを実行時に利用可能であることをマークする必要があります。アノテーションのコードに以下を追加してください。

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}