使用示例:
我想在类字段上放置一个自定义注释 @MyContainer,然后在所有此类字段上自动添加相关的 Hibernate 注释(取决于字段类型和属性)。
此外,我需要向类添加 JAXB XmlType 注释,并将类型名称基于类名称。
我还想根据他们的类型等向字段添加注释。
所有添加的注释都应该在运行时可用(这样 hibernate/JAXB 可以找到它们)。
我知道以下选项:
- 预处理类源码(错误选项)
- 在编译期间使用 javax.annotation.processing API 进行处理
- 使用 Java Assist 等工具进行编译后操作
- 使用 java.lang.instrument API 加载类期间的操作
- 用 AspectJ 做(不够强大)
我的主要目标是:
- 保持类和源代码同步以进行调试
- 支持 Maven 和 IDE (Eclipse/Intellij) 工作
如果已经做过此类事情的人可以推荐完成此类任务的最佳方法(可能还有潜在的陷阱),我将不胜感激。
最佳答案
这是定义自定义注释的代码示例。此 @TesterInfo 应用于类级别,存储测试人员详细信息。这显示了返回类型的不同用法——枚举、数组和字符串。
package com.mkyong.test.core;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE) //on class level
public @interface TesterInfo {
public enum Priority {
LOW, MEDIUM, HIGH
}
Priority priority() default Priority.MEDIUM;
String[] tags() default "";
String createdBy() default "Mkyong";
String lastModified() default "03/01/2014";
}
关于java - 向 Java 类添加编程注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11598333/