2010-09-26 98 views
15

我做了一个自定义的注释为我的项目,该项目将只与领域中使用,这是访问注释字段

@MyAnnotation int myVariable

我有另一个类将负责根据变量执行某些动作值。该项目有不确定数量的课程,包括注释。我如何使用我的注释处理器访问它们以访问这些值?

我可以检查通过每个类的注释变量,但不会修改该值,因为它不是一个对象。

有关如何做的建议?

在此先感谢! :)

+0

我还发现一个[链接](http://stackoverflow.com/questions/13875029/how-do-i-get-all-fields-and-properties-of-an-object-这是与您的问题类似 – Fritz 2014-06-18 06:11:15

+0

我以前接受的答案列出仍然可用(在撰写本评论时)文章标题为“[如何注释工作](http://www.objectpartners.com/2010/08/06 /怎么办的注解工作/)”。 – 2015-12-03 18:54:01

回答

19
int getMyVariable(Foo foo) throws IllegalArgumentException, IllegalAccessException{ 
for(Field f:foo.getClass().getDeclaredFields()){ 
    /** 
    * Ensure the RetentionPolicy of 'MyAnnotation' is RUNTIME. 
    */ 
    if(f.isAnnotationPresent(MyAnnotation.class)){ 
    return f.getInt(foo); 
    } 
} 
return -1; 
} 
+0

适用于查找字段,但有时注释位于存取器方法上。 – cosbor11 2015-09-14 22:01:54

+0

私人领域呢?我相信这是行不通的... – 2016-01-15 07:48:13

+0

Remi D:私人领域不是问题,你只需要调用field.setAccessible(true); – 2016-02-22 09:05:39