在Java中,自定义注解(Annotation)是一种强大的工具,允许你为代码添加元数据。这些元数据可以在编译时或运行时被读取,并用于各种目的,如代码生成、框架配置、测试等。
下面是一个自定义注解的简单步骤和示例:
步骤:
- 声明注解:使用
@interface
关键字声明一个注解。 - 定义注解元素:在注解中定义元素(类似于类的字段),用于存储值。这些元素可以有默认值。
- 指定元注解(可选):元注解是修饰其他注解的注解。例如,你可以使用
@Retention
和@Target
来指定注解的保留策略和适用目标。 - 使用注解:在代码中使用你定义的注解。
- 处理注解(可选):在编译时或运行时处理注解。这通常涉及到解析注解并使用它们提供的元数据信息。
示例:
// 1. 声明注解
@Retention(RetentionPolicy.RUNTIME) // 运行时保留注解
@Target(ElementType.METHOD) // 注解只能应用于方法
public @interface MyCustomAnnotation {
// 2. 定义注解元素
String value() default ""; // 有一个名为value的元素,带有默认值""
int number() default 0; // 还有一个名为number的元素,带有默认值0
}
// 3. 使用注解
public class MyClass {
@MyCustomAnnotation(value = "Hello", number = 123)
public void myMethod() {
// ...
}
}
// 4. 处理注解(示例:在运行时处理)
public class AnnotationProcessor {
public static void main(String[] args) {
MyClass myClass = new MyClass();
// 获取方法上的注解
for (Method method : MyClass.class.getDeclaredMethods()) {
if (method.isAnnotationPresent(MyCustomAnnotation.class)) {
MyCustomAnnotation annotation = method.getAnnotation(MyCustomAnnotation.class);
System.out.println("Value: " + annotation.value());
System.out.println("Number: " + annotation.number());
}
}
}
}
在上面的示例中,我们定义了一个名为
MyCustomAnnotation
的注解,它有两个元素:value
和number
。然后,我们在MyClass
的myMethod
方法上使用了这个注解,并指定了value
和number
的值。最后,在AnnotationProcessor
类中,我们遍历MyClass
的所有方法,检查它们是否带有MyCustomAnnotation
注解,并打印出注解的值。