如何在注释处理器中捕获常量表达式?

时间:2015-01-22 11:03:58

标签: java annotations

我希望能够在以下代码示例中检测name *变量的初始化方式,以及是否内联了name *。这可能吗?

@FancyAnnotation
public static final String name1 = new String("B1");

@FancyAnnotation
public static final String name2 = "B2";

感谢。

1 个答案:

答案 0 :(得分:4)

ElementVisitors可用于检测常量初始值设定项。

boolean usesConstantValue = element.accept(new ConstantValueDetector(), null);

...

private static class ConstantValueDetector extends SimpleElementVisitor8<Boolean, Void> {
  @Override
  public Boolean visitVariable(VariableElement e, Void aVoid) {
    super.visitVariable(e, aVoid);
    return e.getConstantValue() != null;
  }
}