gpt4 book ai didi

java - 是否可以在注释处理环境中获取包中的所有 TypeElement?

转载 作者:行者123 更新时间:2023-11-30 02:37:08 27 4
gpt4 key购买 nike

我的库中有几个包,其中包含注释和基类。我在这个问题的上下文中扩展了 javax.annotation.processing.AbstractProcessor 。

有没有办法获取包中声明的所有类型的 java.lang.TypeElement 的列表/数组/集合?甚至是元素?

目前,我有一个解决方法,通过使用类型上的注释将类标记为组,该类型仅存在于表示库中相关对象的组。有没有比显式声明更简单的方法来按包(即位置)将类型分组在一起?

最佳答案

找到了答案 - 我使用ProcessingEnvironment实例变量(在我的AbstractProcessor子类中)来获取javax.lang.model.util.Elements执行真正有用的元素/类型/包访问的实例:

   List<TypeMirror> typeMirrorsInPackage = processingEnv.getElementUtils()
.getPackageElement("com.example.sample.annotations")
.getEnclosedElements()
.stream()
.map(Element::asType)
.filter(mirror -> mirror.getKind() == TypeKind.DECLARED)
.collect(Collectors.toList());

要小心,根据javadoc :如果这是通用元素,则返回原型(prototype)类型。这是元素对与其自己的形式类型参数相对应的类型变量的调用。显然是Types类有更多有用的实用方法来处理泛型。

关于java - 是否可以在注释处理环境中获取包中的所有 TypeElement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42745945/

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