# JAVA元注解@interface怎么使用
## 一、元注解概述
元注解(Meta-Annotation)是Java中用于修飾其他注解的注解,位于`java.lang.annotation`包中。JDK 1.5開始引入,主要用于定義自定義注解的行為。常見的元注解包括:
- `@Target`:指定注解作用目標
- `@Retention`:指定注解生命周期
- `@Documented`:控制是否出現在Javadoc中
- `@Inherited`:控制子類是否繼承父類注解
- `@Repeatable`(JDK 1.8+):允許重復使用
## 二、@interface自定義注解
`@interface`是定義自定義注解的關鍵字,語法類似接口定義:
```java
public @interface MyAnnotation {
// 注解元素
}
default設置默認值value@Target(ElementType.TYPE) // 僅用于類/接口
public @interface ClassAnnotation {}
@Target({ElementType.METHOD, ElementType.FIELD}) // 多作用域
public @interface MultiTargetAnnotation {}
可選值: - TYPE:類/接口 - FIELD:字段 - METHOD:方法 - PARAMETER:參數 - CONSTRUCTOR:構造器 - LOCAL_VARIABLE:局部變量 - ANNOTATION_TYPE:注解類型 - PACKAGE:包
@Retention(RetentionPolicy.RUNTIME)
public @interface RuntimeAnnotation {}
可選策略: - SOURCE:僅源碼保留(如@Override) - CLASS:編譯期保留(默認值) - RUNTIME:運行時保留(可通過反射讀?。?/p>
@Documented
public @interface DocAnnotation {}
使用后該注解會出現在Javadoc中
@Inherited
public @interface InheritableAnnotation {}
父類使用該注解時,子類自動繼承
@Repeatable(Schedules.class)
public @interface Schedule {
String time();
}
public @interface Schedules {
Schedule[] value();
}
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MethodInfo {
String author() default "unknown";
String date();
int version() default 1;
String[] reviewers();
}
// 使用示例
class Demo {
@MethodInfo(
author = "John",
date = "2023-05-20",
version = 2,
reviewers = {"Alice", "Bob"}
)
public void testMethod() {}
}
@Controller、@Service@Data、@Getter@Test{"a","b"})
Method method = obj.getClass().getMethod("testMethod");
MethodInfo info = method.getAnnotation(MethodInfo.class);
@Retention策略,避免不必要的運行時開銷元注解機制是Java注解體系的核心,通過合理組合元注解可以: - 精確控制注解作用目標 - 靈活管理注解生命周期 - 實現豐富的代碼標記功能 - 為框架開發提供強大支持
掌握元注解的使用,能夠顯著提升代碼的表達能力和框架設計水平。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。