注解

注解是一种元数据机制,它提供了在程序中插入注释和元数据的方式。Java注解可以与类、方法、变量等元素关联,并且可以通过反射机制在运行时获取这些元素的信息。

场景

  • 标记:使用注解标记一段代码或者一个类,以便在之后进行处理。例如JUnit测试框架就是使用@Test注解来标记测试方法。
  • 配置:使用注解来配置应用程序或者框架的行为,以便在不同的环境中自动适配。例如Spring框架中就使用注解来配置Bean的作用域、事务管理、AOP等。
  • 文档:使用注解生成文档,帮助开发人员更好地理解代码。例如Javadoc工具就使用注解来生成API文档。

使用

定义一个注解需要使用@interface关键字,并且还需要使用两个元注解(meta-annotation):

  1. @Retention(RetentionPolicy.RUNTIME):指定了注解在运行时保留,这样可以通过反射机制读取注解信息。
  2. @Target(ElementType.METHOD):指定了注解可以被用于方法上

示例如下:

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
    String value();
}

ElementType的种类包括:

  1. TYPE:表示注解可以应用于类、接口(包括注解类型)或枚举声明。
  2. FIELD:表示注解可以应用于字段声明(包括枚举常量)。
  3. METHOD:表示注解可以应用于方法声明。
  4. PARAMETER:表示注解可以应用于参数声明。
  5. CONSTRUCTOR:表示注解可以应用于构造函数声明。
  6. LOCAL_VARIABLE:表示注解可以应用于局部变量声明。
  7. ANNOTATION_TYPE:表示注解可以应用于注解类型声明。
  8. PACKAGE:表示注解可以应用于包声明。
  9. TYPE_PARAMETER:表示注解可以应用于类型参数声明(Java 8及以上版本支持)。
  10. TYPE_USE:表示注解可以应用于使用类型的任意位置(Java 8及以上版本支持)。
Last Updated: