【问题标题】:Access annotated fields访问带注释的字段
【发布时间】:2010-09-26 05:29:51
【问题描述】:

我为我的项目做了一个自定义注释,它只用于字段,即

@MyAnnotation int myVariable

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

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

关于如何做的任何建议?

提前致谢!! :)

【问题讨论】:

  • 我还发现了一个link 类似于你的问题
  • 我之前接受的答案仍然可用(在撰写此评论时)标题为“How do annotations work”的文章。

标签: java reflection annotations


【解决方案1】:
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;
}

【讨论】:

  • 适合查找字段,但有时注释在访问器方法上。
  • Remi D:私有字段没问题,你只需要调用 field.setAccessible(true);
猜你喜欢
  • 2012-02-08
  • 2016-07-19
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2020-03-11
相关资源
最近更新 更多