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

Java注释过程中尚未生成的元素

路裕
2023-03-14

我发现,通过在类A中为返回IntB的方法的返回值编写完全限定名,我可以避免这个问题。但是,如果是这样的话,我想让处理器在稍后的时间处理这个类,当IntB已经生成时。

如何延迟类A上的批注过程?

PS:到目前为止,我已经建立了一个机制,它检查以下语句(element.getReturnType().getKind()==typeKind.error)的每个方法的返回值,在这种情况下,我抛出一个异常,并将该元素添加到一个列表中,该列表将在另一轮中处理。它没有工作,因为它用同样的问题处理了元素几次。另外,我试图将false返回给从AbstractProcessor重写的process()方法,但仍然不起作用。

共有1个答案

裴实
2023-03-14

首先收集要生成的所有接口的信息,因为在同一轮注释处理中,您很可能同时访问类A和类B。

您的注释处理器将只在处理开始时实例化一次,因此您可以使用它上的属性来存储有关需要为它们生成接口的类的元信息。

然后,在用注释处理完所有类之后,使用这些信息一次性构建接口。

 类似资料:
  • 问题内容: 我正在使用Java 6注释处理API。我遵循了以下出色的教程,以创建用于在构建时显示消息的注释处理器: http://kerebus.com/2011/02/using-java-6-processors-in- eclipse/ 但是,就我而言,我有一个简单的类: 如您所见,使用元注释“ Retention”在运行时使JVM可以使用上述注释。我在另一个类的源代码中使用此“标准”注释来

  • JAXB为每个属性生成@XmlAttribute注释。例如,属性 转换为带注释的java对象属性 但是,如果属性在名称中没有下划线,则@Xml属性中的名称字段丢失(因此##默认)。我想自定义JAXB绑定,以便也生成没有下划线的名称的注释。有什么建议吗? 谢谢!Johannes

  • 我正在编写一个简单的java注释处理器,它使用JavaPoet生成java类,然后将其写入文件管理器。 这个注释处理器正在将文件保存到中,而不是 我尝试将maven编译器插件中目录设置为生成的sources目录,但它仍然在class文件夹中生成它。 如何将生成的类保存在生成的源文件夹中?

  • 我在使用gradlew(4.10.2)+dagger(2.18)时遇到了一个奇怪的问题。 问题是当我打电话的时候: /commonmodule_providesgsonFactory.java:6:错误:包javax.annotation.processing不存在导入javax.annotation.processing.generated; /commonmodule_providesgson