当前位置: 首页 > 知识库问答 >
问题:

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

高溪叠
2023-03-14

我正在尝试使用注释处理器来验证注释,并且作为这项工作的一部分,我正在尝试弄清楚如何使用API来确定可执行文件的参数是否是参数化类型(例如List

除了解析ve.asType(). toString()给出的字符串之外,还有什么方法可以做到这一点吗?其中VariableElement ve是ExecutableElemente.getParameters()的一个元素?对这些类型有一个比简单的字符串更好的处理会很好。

共有1个答案

穆阳炎
2023-03-14

这个想法是知道何时转换为什么,在您的情况下,您需要获取泛型类型参数,因此您需要转换为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的自定义注释。我想强制注释的用户,如果他用@Foo注释了方法,他必须在方法参数列表中声明至少一个。所以它应该是这样的: 使用注释处理器,我可以检索变量的类型,但不能检索最终的修饰符。如果我想检索下面代码中所示的修改器集,那么该集将始终为空,尽管最后一个修改器出现在参数上。 有什么想法,为什么会这样?

  • 我正在使用注释处理来生成一些类...我有两个模块,处理器本身和使用它的“客户端”模块。我想通过客户端向处理器传递一个参数,我可以这样做 如何在处理器端检索此参数?

  • 我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?

  • JavaScript 参数处理的基本原理很简单,高级的任务都需要手动操作。 本文首先关注其基本原理然后再行扩展。 1、参数处理的基本原理 JavaScript 的参数处理包括两个要点 1.1、要点:你可以传递任意数量的参数 当调用一个 function 时,你想传递多少参数都可以,这与该函数声明了多少个正式的参数无关。 缺失参数的值是 undefined,多出来的参数则直接被忽略掉。 我们用以下的

  • 问题内容: 我刚刚开始在Java 8中使用注释,并得到了一些意外的结果。 我有这样的方法: 我编写了一个JUnit测试,为参数searchList传递了空值。我原以为会发生某种类型的错误,但好像没有注释就通过了。这是预期的行为吗?据我了解,这是允许您跳过编写样板空检查代码。 对于@NotNull应该做什么的解释将不胜感激。 问题答案: 和自己做什么。它们应该充当文档工具。 该注释提醒您在以下情况下

  • 我编写了一个JUnit测试,为参数searchingList传入null值。我原以为会发生某种类型的错误,但结果好像注释不在那里一样。这是意料之中的行为吗?根据我的理解,这是允许您跳过编写样板空校验代码。 如果能解释一下@NotNull到底应该做什么,将会非常感谢。