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)
- 注解不影响代码执行,需要通过反射或其他处理器来利用注解信息