我创建我的注释
public @interface MyAnnotation {
}
我把它放在我的测试对象的字段上
I put it on fields in my test object
public class TestObject {
@MyAnnotation
final private Outlook outlook;
@MyAnnotation
final private Temperature temperature;
...
}
现在我想用 MyAnnotation 获取所有字段的列表.
Now I want to get list of all fields with MyAnnotation.
for(Field field : TestObject.class.getDeclaredFields())
{
if (field.isAnnotationPresent(MyAnnotation.class))
{
//do action
}
}
但似乎我的块执行操作从未执行,并且字段没有注释,因为以下代码返回 0.
But seems like my block do action is never executed, and fields has no annotation as the following code returns 0.
TestObject.class.getDeclaredField("outlook").getAnnotations().length;
有人可以帮助我并告诉我我做错了什么吗?
Is anyone can help me and tell me what i'm doing wrong?
您需要将注解标记为在运行时可用.将以下内容添加到您的注释代码中.
You need to mark the annotation as being available at runtime. Add the following to your annotation code.
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}
这篇关于通过使用反射获取带有注释的字段列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
“Char 不能被取消引用"错误quot;Char cannot be dereferencedquot; error(“Char 不能被取消引用错误)
Java Switch 语句 - 是“或"/“和"可能的?Java Switch Statement - Is quot;orquot;/quot;andquot; possible?(Java Switch 语句 - 是“或/“和可能的?)
Java替换字符串特定位置的字符?Java Replace Character At Specific Position Of String?(Java替换字符串特定位置的字符?)
具有 int 和 char 操作数的三元表达式的类型是什么What is the type of a ternary expression with int and char operands?(具有 int 和 char 操作数的三元表达式的类型是什么?)
读取文本文件并存储出现的每个字符Read a text file and store every single character occurrence(读取文本文件并存储出现的每个字符)
为什么我需要在 byte 和 short 上显式转换 char 原语Why do I need to explicitly cast char primitives on byte and short?(为什么我需要在 byte 和 short 上显式转换 char 原语?)