Skip to content

Java 注解入门

TIP

注解(Annotation)是 Java 5 引入的一种元数据机制,可以在代码中添加描述信息,在编译时或运行时被解析处理。

元注解

Java 提供了 5 种元注解,用于修饰自定义注解:

元注解说明
@Target注解可应用的目标(方法、类、字段等)
@Retention注解保留策略(源码、字节码、运行时)
@Documented是否包含在 Javadoc 中
@Inherited子类是否继承父类的注解
@Repeatable注解是否可重复使用

自定义注解

java
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
    String value() default "";
    boolean enable() default true;
}

使用注解

java
public class UserService {

    @Log("查询用户")
    public User getUser(Long id) {
        // ...
        return new User();
    }

    @Log(value = "更新用户", enable = true)
    public void updateUser(User user) {
        // ...
    }
}

反射解析注解

java
public class AnnotationProcessor {
    public static void main(String[] args) throws Exception {
        Method[] methods = UserService.class.getDeclaredMethods();
        for (Method method : methods) {
            if (method.isAnnotationPresent(Log.class)) {
                Log log = method.getAnnotation(Log.class);
                System.out.println("方法: " + method.getName()
                    + ", 日志内容: " + log.value()
                    + ", 是否启用: " + log.enable());
            }
        }
    }
}

WARNING

  • 运行时获取注解需要 @Retention(RetentionPolicy.RUNTIME)
  • 注解不影响代码执行,需要通过反射或其他处理器来利用注解信息