annotation-processing相关内容

注释处理工具 <- 检查有效的注释

我有 @ColumnMetadata(index=1)...@ColumnMetadata(索引=2)...@ColumnMetadata(索引=3)... 而且我必须使用 APT 检查索引号是否唯一.我不知道该怎么做.教程看不懂,一般网上找资料有问题. 如何做到这一点?任何关于 APT 的教程/任何内容? 解决方案 您可能想要使用可插入注释 API,它是 apt 工具的继承者. ..
发布时间:2021-11-10 22:55:03 Java开发

如何在 Maven 2 中使用自定义注释处理器?

在我们的企业应用程序中,我们正在寻求一种动态方式来从我们的 Java 类中收集数据.我们创建了一个带有 name 属性的自定义注释接口 (@interface).我们想从所有带注释的类中收集此属性的值. 我设法为自定义注释创建了一个 AnnotationProcessorFactory 和一个 AnnotationProcessor.由于我们使用的是 Maven 2,我在主项目的 pom.x ..

注释处理器,获取方法参数的修饰符

我目前在一个项目中使用 Java 的自定义注释.我想强制使用我的注释的用户,如果他用@Foo 注释了方法,他必须在方法参数列表中至少声明一个 final boolean b.所以它应该看起来像这样: @Foopublic void foo(final boolean b) { }@Foopublic void bar() { }//这应该会导致错误 使用我的注释处理器,我可以检索变量的类型但不 ..
发布时间:2021-11-10 22:46:31 Java开发

方法体中注解的处理

我正在使用 Pluggable Annotation Processing API 处理 java 注释.是否也可以处理内部方法主体中使用的注释? 感谢您的帮助.彼得 解决方案 我想,我找到了解决方案.正如我所想,当前的 javac 是不可能的.本地注解只是简单的注释,不会被可插拔注解处理api处理.但是在 JSR308 中有一些有趣的工作,处理支持奇妙事物的类型注释作为类型变量的参 ..
发布时间:2021-11-10 22:45:47 Java开发

Java Annotations Processor:检查 TypeMirror 是否实现了特定的接口

我正在使用 Java 注释处理器.我的注释 @foo 用于标记可以在运行时读取到文件或从文件中读取的字段变量.但是,我想在编译时检查变量类型是否实现了 Serializable,以便如果该字段不可序列化,我可以在编译时给出警告/错误. (我不需要实际检查对象是否可序列化,如果它实现了Serializable 接口,我会相信它). 我已经弄清楚如何做其他事情,但我无法弄清楚如何检查元素是 ..
发布时间:2021-11-10 22:42:02 Java开发

如何为 Java 注释处理器编写自动化单元测试?

我正在试验 Java 注释处理器.我能够使用“JavaCompiler"编写集成测试(实际上我现在正在使用“hickory").我可以运行编译过程并分析输出.问题:即使我的注释处理器中没有任何代码,单个测试也会运行大约半秒.这对于以 TDD 风格使用它的时间太长了. 模拟依赖项对我来说似乎很难(我必须模拟整个“javax.lang.model.element"包).有人成功为注释处理器 (J ..
发布时间:2021-11-10 22:36:45 Java开发

如何使用 Java 1.6 Annotation Processing 执行编译时编织?

我创建了一个注释,将它应用到 DTO 并编写了一个 Java 1.6 样式的 annotationProcessor.我可以看到如何让 annotationProcessor 编写一个新的源文件,这不是我想要做的,我看不到或不知道如何让它修改现有类(最好只修改字节码).修改实际上相当简单,我希望处理器做的就是插入一个新的 getter 和 setter,其中名称来自正在处理的注释的值. 我的 ..

在 Java 6 注释处理器中查找方法返回类型的类型参数

我正在编写一个工具,它使用注解处理器根据注解类的方法的返回类型生成源代码.返回类型始终是定义类型变量 T 的接口 A 的某个子类型(接口或类). interface A{T m();}; 我想找到方法 m() 返回值类型变量 T 的类型参数. 返回类型由注解处理器表示为一个 javax.lang.model.type.TypeMirror 实例.最简单的情况是直接返回A. @SomeA ..
发布时间:2021-11-10 22:14:40 Java开发

从 Java Annotation Processor 访问源代码

我正在尝试从 Java 注释处理器中访问类型的实际原始源代码.这有可能吗?谢谢! 解决方案 我遇到了一个问题,我必须访问一些源代码(非字符串/非原始常量的初始化代码)并通过访问解决了这个问题通过 Compiler Tree API. 这是一般配方: 1.创建自定义 TreePathScanner: 私有静态类 CodeAnalyzerTreeScanner extends T ..
发布时间:2021-11-10 22:05:12 Java开发

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

Maven 编译器插件的文档提到以下内容: annotationProcessors: 要运行的注释处理器的名称.仅适用于 JDK 1.6+ 如果不是设置,默认注释处理器发现过程适用. 这里的默认注释处理器发现过程是什么?除了这个配置标签,还有其他方法可以设置注解处理器吗? 我发现入门注释处理工具 (apt) 文档提到了一个默认发现过程,但它适用于工厂类而不是处理器,不幸的 ..

如何通过AnnotationProcessor访问TypeUse注释

问题: 是否可以通过注释处理器访问带有 @Target(ElementType.TYPE_USE)注释的元素? 是否可以通过注释处理器访问带注释的类型边界? 高度赞赏我错过的相关文档的链接. 上下文: 注释: @Target(ElementType.TYPE_USE)@Retention(RetentionPolicy.SOURCE)公共@interface Type ..
发布时间:2021-05-18 19:29:48 Java开发

在注释源配置的generate-sources阶段需要来自src/main/resources的文件

我有一个注释处理器,需要对其进行一些配置,以告诉它一些有关如何生成源代码的详细信息.我花了很多时间试图理解为什么文件在构建后就位于目标/类中,但是在批注处理过程中却遇到了一个异常,指出该文件实际上不存在. 经过大量的挖掘,我终于弄清了为什么文件(存储在 src/main/resources/config 中)没有被复制到 target/classes/config 供我的注释处理器读取- g ..
发布时间:2021-04-22 19:12:21 Java开发

如何使用@Target(ElementType.TYPE_USE)处理注释?

我正在实现注释处理器,以确保带有注释的元素是实现特定接口的类的实例,或者是用于实现特定接口的类型的使用: @已记录@Target(值= {ElementType.PARAMETER,ElementType.TYPE_USE})@Retention(值= RetentionPolicy.RUNTIME)公共@interface AuditSubject {}公共接口可审核{//提供用于写入日志条 ..