8得票1回答
如何在Java注解处理器中获取正确的JavaFileManager?

我通过扩展javax.annotation.processing.AbstractProcessor编写了一个Java注释处理器,在Eclipse上下文中被调用,并且它的工作很好,除了我需要更多有关源路径和类路径的信息以使我的处理器正常工作: @SupportedAnnotationType...

7得票3回答
以编程方式调用注解处理器

这是我第一次编写注释处理器,我想以编程方式调用它。这是否可能? 我已经为处理器编写了小代码: @SupportedAnnotationTypes({"app.dev.ems.support.annotation.HBMModel"}) public class HBMModelProces...

7得票1回答
现代Java注解处理

注解处理在Java 6+中仍然是一个活跃的部分,它并没有被弃用/不鼓励使用/过时。如果已经过时,那么为什么(为什么不再需要/有用)?如果它仍然非常有用并且“活跃”(针对Java 6+ JDK开发新项目仍将受益于此),请确认/纠正我关于注解处理器用法的理解: 您创建自己的注解类,例如 @My...

17得票1回答
Java 1.8和IntelliJ IDEA 14中注释的编译错误

我正在使用Java注解处理程序进行开发。在IntelliJ IDEA中构建应用程序失败,而在maven构建中则成功。我确定提供程序类存在,但仍然收到以下错误:java: Bad service configuration file, or exception thrown while cons...

10得票3回答
如何在Java中使用自定义类型注解

Java 8有一个被称为类型注解的特性(JSR 308)。我想将其用于简单的对象映射框架。我想定义这样的注释@ExpectedType@Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) @Retention(Retention...

7得票2回答
使IntelliJ能够识别由AnnotationProcessor生成的类

我正在使用Java注解处理器在编译时生成额外的类。在使用gradle构建时没有问题,但我无法让IntelliJ识别生成的类。每当我尝试在IntelliJ中构建项目时,它会出错,并表示找不到引用生成类的符号。同样地,由于它不知道这些类,因此在编写使用这些类的代码时,它不会提供任何帮助,而只是将其...

15得票4回答
Java 泛型: 在运行时访问泛型类型

我希望您能在运行时访问已声明字段的通用类型。之前我认为由于Java类型擦除而不可能实现,但是某些知名框架通过反射在运行时利用了泛型类型,因此这一点并非不可能实现。 例如,Guice将基于您提供的泛型类型实现一个提供程序: public class Injectable{ @Inj...

17得票1回答
Java注解处理器:检查TypeMirror是否实现了特定接口

我正在开发一个Java注解处理器。我的注解@foo用于标记可以在运行时从文件中读取或写入到文件的字段变量。然而,我希望在编译时检查变量类型是否实现了Serializable接口,以便如果字段不可序列化,我可以在编译时提供警告/错误。 (我不需要实际检查对象是否可序列化,如果它实现了Seria...

27得票1回答
Java 6向前兼容注解处理器和SupportedSourceVersion

我正在为一个项目尝试使用Java 7,并从注解处理器(Bindgen和Hibernate JPA modelgen)收到以下警告:warning: Supported source version 'RELEASE_6' from annotation processor 'org.hiber...

7得票4回答
如何使用Java 1.6的注解处理器进行编译时织入?

我已经创建了一个注解,并将其应用于DTO,并编写了一个Java 1.6风格的注解处理器。我知道如何让注解处理器编写一个新的源文件,但这不是我想要做的。我无法找到方法或了解如何使它修改现有的类(最好只是修改字节码)。实际上,修改相当简单,我希望处理器在处理注解时插入一个新的getter和sett...