Java 注解处理 - 获取构造函数值

问题描述 投票:0回答:1

是否可以在注释处理器中获取枚举常量的构造函数参数的值?

我有一个枚举,它定义了一个构造函数并被扫描,因为它也带有注释。

@MyAnnotation
public enum Exmaple{
    FOO("foo value"),
    BAR("bar value");

    Example(final String val){}
}    

我希望能够获取常量定义的构造函数参数的值(即实际上知道常量 FOO 是用“foo value”初始化的)。这可能吗?

我可以找到每个常量,但没有封闭的元素,因此实际的

TypeElement
枚举常量似乎是该行的末尾。

任何帮助都会很棒!

java annotations annotation-processing annotation-processor
1个回答
0
投票

给出以下枚举:

public enum EnumSize {
    SMALL(1), MEDIUM(2), LARGE(3);

    private final int size;
}

我们可以使用Tree API来获取语句:

var trees = Trees.instance(processingEnv);
VariableElement enumConstant = // get from enclosing elements
trees.getTree(enumConstant) // here you go:
/*public static final*/ SMALL /* = new EnumSize(1) */ /*enum*/ (1)
© www.soinside.com 2019 - 2024. All rights reserved.