问题标签 [annotation-processing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 什么是默认注释处理器发现过程?
Maven Compiler 插件的文档提到以下内容:
注释处理器:
要运行的注释处理器的名称。仅适用于 JDK 1.6+ 如果未设置,则应用默认注释处理器发现过程。
这里默认的注释处理器发现过程是什么?除了这个配置标签,还有其他方法可以设置注释处理器吗?
我发现注释处理工具入门(apt)文档提到了一个默认的发现过程,但它适用于工厂类而不是处理器,不幸的是它使用了 JDK 中的tools.jar
和com.sun
包。这是默认的注释处理器发现过程吗?
java - 使用相同的处理器实例处理不同的注释
我们的项目中有两个注释,我想收集带注释的类并基于两个类列表创建合并输出。
这可能只有一个Processor
实例吗?我如何知道Processor
实例是否被每个带注释的类调用?
java - 如何在 APT 中访问 @XmlElement 值?
我在编译时使用 APT 处理注释,我需要获取@XmlElement
某些类中注释的值。该类看起来像这样:
我想获取 的name
值@XmlElement
,但以下处理器代码无法为我获取它:
android - Android项目+Eclipse+注解处理
有谁知道如何在 Android 项目中的 Eclipse 中启用注释处理?我做了以下事情:
- 使用处理器和META-INF > services文件创建了一个 Java 项目,其中包含我要使用的处理器的类名;
- 将处理器项目导出为 .jar 文件;
- 将处理器 jar 文件导入文件夹(不是 /libs)并配置项目属性以启用注释处理(属性 > Java 编译器 > 注释处理)。
如果我从文件夹中删除 jar 文件,Eclipse 会在项目中报告错误,因为未找到注释处理器。但是如果处理器就位并且配置了 Eclipse,则不会进行处理。
如果我在标准 Java 项目中使用相同的处理器,它就可以正常工作。
有人能帮我吗?谢谢
ant - Ant:带有proc的javac:仅来自Ant?
有没有办法强制javac
任务只调用注释处理,而不进行编译。-proc:only
根据javac 文档,javac 选项应该强制执行此类行为。
但是下面的 ant buildfile 片段:
无论如何编译项目。我尝试了其他<compilerarg>
标签版本(例如line
,而不是value
),但没有任何帮助。
java - 用于将消息属性添加到字段上的现有 JSR-303 注释的注释处理
我有一个使用 JSR-303 约束注释的数据传输对象,例如...
我正在尝试使用注释处理来丰富每个 JSR-303 约束,message
其值将等于constraint-name.class-name.member-name
.
例如,使用上面的方法,locationName
字段注释的最终生成输出看起来像......
为什么?因为我想完全控制自定义验证消息。我有数百个数据传输对象,我想用类似的东西来处理......
我想知道上述方法是否可行,或者我是否应该尝试其他方法(这可能更简单)。此外,如果可行,请说明在上述处理器的 //TODO 部分中实现什么的方向。目前咨询过...
- http://today.java.net/pub/a/today/2008/04/10/source-code-analysis-using-java-6-compiler-apis.html#resources
- http://blog.xebia.com/2009/07/21/testing-annotation-processors/
- Java中注解处理的弊端?
- 为 maven-processor-plugin 编写注释处理器
- 如何在 Maven 2 中使用自定义注释处理器?
- 我可以从 TypeVariable 或 VariableElement 获取基础类上的方法列表吗?在编译时的注释处理器中
java - 将 javassist 字节码操作与 maven 编译集成
我有一个使用 javac / aspectj 编译器编译的 maven 项目。
我想在编译了 javassist 程序的类上运行,该程序操纵编译的类并向它们添加东西。
我想使用“进程类”阶段来运行我的工具。
我的问题是用 javassist 对“目标/类”中创建的类文件进行迭代的最佳方法是什么,以便之后我可以加载、修复和保存。
另一个要求是也在测试类上运行该工具。
如果有一个开源项目可以做类似的事情,那么看到一个活生生的例子会很棒。
谢谢,
阿夫纳
java - 生成实现 JSR 308“instanceof @MyAnotations”运行时检查的代码
JSR 308建议向 Java 添加类型注释。批准后,程序员将能够在当前允许 Java 类型的任何地方添加注释。这不仅包括方法/字段/本地/参数装饰,还包括构造函数调用、类型转换和最奇怪的 instanceof 检查。Checker 框架使用JSR 308 来实现类型限定符@NonNull
,例如对象类型或@Regex
字符串。
现在,Checkers 所做的就是静态分析您的代码。这就是所有编译时检查。没关系。但我想要的是一种可以在运行时进行检查的机制。您可以声明:
我也可以写:
但这与 没有区别x instanceof String
,不执行运行时检查。我需要一个编译时注释处理器或运行时字节码操纵器,它可以让我在instanceof
检查时运行任意代码并返回一个布尔值。Java可以做到这一点吗?
java - 如何从 TypeMirror 对象中获取类型描述符(JNI 风格)字符串(注解处理)
我想得到一个像这样的字符串:
(JNI 风格的类型/方法描述,或称为类型描述符)
从 中的一个javax.lang.model.type.TypeMirror
对象AnnotationProcessor
。是否有任何 Convenience 方法或库可以解析TypeMirror
对象并生成像上面这样的字符串?
我想使用 String
org.objectweb.asm.Type
从类型描述符字符串构造一个对象。
java - 使用元注释触发注释处理器
我已经构建了一个由注释触发的注释处理器com.foo.FooEntity
。需要能够创建更多可以触发该注释处理器的构造型。
例如,控制器也应该触发这个注释处理器。我想知道是否有办法在@FooEntity
上面放置注释。就像是:
并使用它使此类触发注释处理
当然,这里的想法是我想添加新的原型,而不必触及注释处理器本身。