在注释处理期间获取原始注释数据

时间:2015-06-26 11:14:27

标签: java annotations annotation-processing

我有类似的东西

@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();

1 个答案:

答案 0 :(得分:0)

似乎我找到了答案,所以由于我的观察,你只能访问最终值,因为编译器可能会在编译的早期阶段用实际值替换常量。

访问注释中的数据的机制如下:

for (AnnotationMirror mirror : e.getAnnotationMirrors()) {
    for (ExecutableElement el : mirror.getElementValues().keySet()) {
        info("Element:" + el + " Value:" + elementValues.get(el));
    }
}

e通过注释处理器获取Element