gpt4 book ai didi

java - 使用 Java 注解处理器了解方法参数的参数化类型

转载 作者:行者123 更新时间:2023-12-02 09:58:10 29 4
gpt4 key购买 nike

我正在尝试使用注释处理器来验证注释,作为该工作的一部分,我正在尝试弄清楚如何使用 API 来确定 ExecutableElement 的参数是否是参数化类型(例如 List< Foo>),如果是,参数化类型是什么(Foo)。

除了解析 ve.asType().toString() 给出的字符串(其中 VariableElement ve 是 ExecutableElement e.getParameters() 的元素)之外,还有什么方法可以做到这一点?如果能够更好地处理这些类型而不仅仅是字符串,那就太好了。

最佳答案

这个想法是知道何时转换为什么,在您的情况下,您需要获取泛型类型参数,因此您需要转换为 DeclaredType

例如下面的方法

@SampleAnno
public void something(List<String> paramx){

}

像这样的处理器中的代码

ExecutableElement method = (ExecutableElement) this.sampleElement;

method.getParameters()
.forEach(parameter -> ((DeclaredType)parameter.asType()).getTypeArguments()
.forEach(typeMirror -> {
messager.printMessage(Diagnostic.Kind.NOTE, "::::::: > [" + typeMirror.toString() + "]");
}));

应该打印信息:java::::::::> [java.lang.String]

关于java - 使用 Java 注解处理器了解方法参数的参数化类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55834655/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com