我有类似的东西
@Value(name="values1", values = { R.string.first, R.string.second, R.string.third })
它的变化
@Value(name="values2", values = { R.integer.first, R.integer.second, R.integer.third })
R.integer.*
和R.string.*
只是在相应类中声明的int常量。
因此,在注释处理过程中,我需要获取全名(例如“R.integer.first”),而不是获取R.integer.first的实际int值。
现在我只能读取值:
Value debug = e.getAnnotation(Value.class);
String name= debug.name();
int[] values = debug.values();
答案 0 :(得分:0)
似乎我找到了答案,所以由于我的观察,你只能访问最终值,因为编译器可能会在编译的早期阶段用实际值替换常量。
访问注释中的数据的机制如下:
for (AnnotationMirror mirror : e.getAnnotationMirrors()) {
for (ExecutableElement el : mirror.getElementValues().keySet()) {
info("Element:" + el + " Value:" + elementValues.get(el));
}
}
e
通过注释处理器获取Element