我创建我的注释

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
        }
}

但是似乎我的block do操作从未执行过,并且字段没有注释,因为以下代码返回0。
TestObject.class.getDeclaredField("outlook").getAnnotations().length;

有谁可以帮助我,告诉我我做错了什么?

最佳答案

您需要将注释标记为在运行时可用。将以下内容添加到您的注释代码中。

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

10-08 00:27