问题标签 [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.

0 投票
1 回答
7165 浏览

java - 什么是默认注释处理器发现过程?

Maven Compiler 插件的文档提到以下内容

注释处理器:

要运行的注释处理器的名称。仅适用于 JDK 1.6+ 如果未设置,则应用默认注释处理器发现过程。

这里默认的注释处理器发现过程是什么?除了这个配置标签,还有其他方法可以设置注释处理器吗?

我发现注释处理工具入门(apt)文档提到了一个默认的发现过程,但它适用于工厂类而不是处理器,不幸的是它使用了 JDK 中的tools.jarcom.sun包。这是默认的注释处理器发现过程吗?

0 投票
1 回答
167 浏览

java - 使用相同的处理器实例处理不同的注释

我们的项目中有两个注释,我想收集带注释的类并基于两个类列表创建合并输出。

这可能只有一个Processor实例吗?我如何知道Processor实例是否被每个带注释的类调用?

0 投票
2 回答
312 浏览

java - 如何在 APT 中访问 @XmlElement 值?

我在编译时使用 APT 处理注释,我需要获取@XmlElement某些类中注释的值。该类看起来像这样:

我想获取 的name@XmlElement,但以下处理器代码无法为我获取它:

0 投票
2 回答
1587 浏览

android - Android项目+Eclipse+注解处理

有谁知道如何在 Android 项目中的 Eclipse 中启用注释处理?我做了以下事情:

  1. 使用处理器和META-INF > services文件创建了一个 Java 项目,其中包含我要使用的处理器的类名;
  2. 将处理器项目导出为 .jar 文件;
  3. 将处理器 jar 文件导入文件夹(不是 /libs)并配置项目属性以启用注释处理(属性 > Java 编译器 > 注释处理)。

如果我从文件夹中删除 jar 文件,Eclipse 会在项目中报告错误,因为未找到注释处理器。但是如果处理器就位并且配置了 Eclipse,则不会进行处理。

如果我在标准 Java 项目中使用相同的处理器,它就可以正常工作。
有人能帮我吗?谢谢

0 投票
1 回答
910 浏览

ant - Ant:带有proc的javac:仅来自Ant?

有没有办法强制javac任务只调用注释处理,而不进行编译。-proc:only根据javac 文档,javac 选项应该强制执行此类行为。

但是下面的 ant buildfile 片段:

无论如何编译项目。我尝试了其他<compilerarg>标签版本(例如line,而不是value),但没有任何帮助。

0 投票
2 回答
2119 浏览

java - 用于将消息属性添加到字段上的现有 JSR-303 注释的注释处理

我有一个使用 JSR-303 约束注释的数据传输对象,例如...

我正在尝试使用注释处理来丰富每个 JSR-303 约束,message其值将等于constraint-name.class-name.member-name.

例如,使用上面的方法,locationName字段注释的最终生成输出看起来像......

为什么?因为我想完全控制自定义验证消息。我有数百个数据传输对象,我想用类似的东西来处理......

我想知道上述方法是否可行,或者我是否应该尝试其他方法(这可能更简单)。此外,如果可行,请说明在上述处理器的 //TODO 部分中实现什么的方向。目前咨询过...

0 投票
1 回答
3421 浏览

java - 将 javassist 字节码操作与 maven 编译集成

我有一个使用 javac / aspectj 编译器编译的 maven 项目。
我想在编译了 javassist 程序的类上运行,该程序操纵编译的类并向它们添加东西。
我想使用“进程类”阶段来运行我的工具。
我的问题是用 javassist 对“目标/类”中创建的类文件进行迭代的最佳方法是什么,以便之后我可以加载、修复和保存。
另一个要求是也在测试类上运行该工具。
如果有一个开源项目可以做类似的事情,那么看到一个活生生的例子会很棒。
谢谢,
阿夫纳

0 投票
2 回答
322 浏览

java - 生成实现 JSR 308“instanceof @MyAnotations”运行时检查的代码

JSR 308建议向 Java 添加类型注释。批准后,程序员将能够在当前允许 Java 类型的任何地方添加注释。这不仅包括方法/字段/本地/参数装饰,还包括构造函数调用、类型转换和最奇怪的 instanceof 检查。Checker 框架使用JSR 308 来实现类型限定符@NonNull,例如对象类型或@Regex字符串。

现在,Checkers 所做的就是静态分析您的代码。这就是所有编译时检查。没关系。但我想要的是一种可以在运行时进行检查的机制。您可以声明:

我也可以写:

但这与 没有区别x instanceof String,不执行运行时检查。我需要一个编译时注释处理器运行时字节码操纵器,它可以让我在instanceof检查时运行任意代码并返回一个布尔值。Java可以做到这一点吗?

0 投票
2 回答
466 浏览

java - 如何从 TypeMirror 对象中获取类型描述符(JNI 风格)字符串(注解处理)

我想得到一个像这样的字符串:

(JNI 风格的类型/方法描述,或称为类型描述符)

从 中的一个javax.lang.model.type.TypeMirror对象AnnotationProcessor。是否有任何 Convenience 方法或库可以解析TypeMirror对象并生成像上面这样的字符串?

我想使用 String org.objectweb.asm.Type从类型描述符字符串构造一个对象。

0 投票
1 回答
825 浏览

java - 使用元注释触发注释处理器

我已经构建了一个由注释触发的注释处理器com.foo.FooEntity。需要能够创建更多可以触发该注释处理器的构造型。

例如,控制器也应该触发这个注释处理器。我想知道是否有办法在@FooEntity上面放置注释。就像是:

并使用它使此类触发注释处理

当然,这里的想法是我想添加新的原型,而不必触及注释处理器本身。