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

How can I capture constant expression in annotation processor?

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

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

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

谢谢。

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;
  }
}