当前位置: 首页 > 面试题库 >

如何编写Java注释处理器?

赖杰
2023-03-14
问题内容

我可能只是看错了方向,但我发现有关批注处理的JSE文档非常稀疏。我想编写一个注释处理器,该处理器处理带注释的String字段和局部变量,以计算的String表达式替换它们。这应该不会太复杂,但是我对于Javax.annotation.processing的Javadoc却迷失了。

编辑:我需要在编译时处理批注,因为我想修改生成的代码。它应将带注释的常量String表达式替换为计算的String表达式。


问题答案:

使用编译时注释处理器无法做到这一点。编译时注解处理器只能生成新文件(和类),而不能修改现有类。您可以在运行时进行反射,但严格来说,这不称为注释处理。另外,您将无法访问局部变量。

如果您正在寻找如何编写编译时注释处理器的方法,请查看https://github.com/pellaton/spring-configuration-
validation-processor



 类似资料:
  • 问题内容: 我正在尝试使用Java注释处理器。我可以使用“ JavaCompiler”编写集成测试(实际上,我目前正在使用“ Hickory”)。我可以运行编译过程并分析输出。问题:即使我的注释处理器中没有任何代码,单个测试也会运行约半秒钟。以TDD样式使用它太长了。 对我而言,模拟依赖项非常困难(我将不得不模拟整个“ javax.lang.model.element”包)。有人成功编写了注释处理

  • null 代码(步骤1和2): 实际上,第一个任务执行良好,并为注释处理器实现编译.class文件。它在第二个任务停止。 Ant说: Java 1.6 Ant 1.8.2

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

  • 我想编写自定义Lombok注释处理程序。我知道http://notatube.blogspot.de/2010/12/project-lombok-creating-custom.html.但是当前的lombok jar文件并不包含很多内容。类文件,但文件名为。症状自评量表。取而代之的是龙目山。 我发现,的。SCL. lombok文件是. class文件,Lombok的构建脚本在生成jar文件时重

  • 问题内容: 我想编写自定义的Lombok注释处理程序。我知道http://notatube.blogspot.de/2010/12/project-lombok- creating-custom.html 。但是当前的lombok jar文件并不包含许多.class文件,而是包含名为.SCL.lombok的文件。 我发现.SCL.lombok文件是.class文件,Lombok的生成脚本在生成ja

  • 问题内容: Android编译器如何工作?是否在编译时删除Java代码和Android XML文件中的注释? 问题答案: 将Java文件中的注释编译为类文件后,它们将被删除或忽略。类文件不是供人阅读的- 它们经过优化可以在虚拟机上高效运行。如果保留注释,它们只会导致类文件大于所需的大小,并且没有任何额外的好处(即,编译器和虚拟机不理解注释,因此为什么要包含它们) 对于XML文件,通常会保留注释。编