Java(5)註解
文章目錄
一、註解的理解
- JDK5.0新增了註解Annotation
- Annotation本質就是程式碼中的特殊標記。這些標記可以在編譯, 類載入, 執行時被讀取, 並執行相應的處理。通過使用 Annotation, 程式設計師可以在不改變原有邏輯的情況下, 在原始檔中嵌入一些補充資訊。程式碼分析工具、開發工具和部署工具可以通過這些補充資訊進行驗證或者進行部署。
- Annotation 可以像修飾符一樣被使用, 可用於修飾包,類, 構造器, 方 法, 成員變數, 引數, 區域性變數的宣告, 這些資訊被儲存在 Annotation 的 “name=value” 對中。
- 在JavaSE中,註解的使用目的比較簡單,例如標記過時的功能,忽略警告等。在JavaEE/Android中註解佔據了更重要的角色,例如用來配置應用程式的任何切面,代替JavaEE舊版中所遺留的繁冗程式碼和XML配置等。
- 未來的開發模式都是基於註解的。
- JPA是基於註解的
- Spring2.5以 上都是基於註解的
- Hibernate3.x以後也是基於註解的
- 現在的 Struts2有一部分也是基於註解的了
- 註解是一種趨勢,一定程度上可以說:框架 = 註解 + 反射 + 設計模式
二、註解應用示例
1、示例一:生成文件相關的註解
2、示例二:在編譯時進行格式檢查(JDK內建的三個基本註解)
- @Override:此註解只能用於方法,用於限定重寫父類的方法。(不加@Override照樣可以重寫,只是不會在編譯時校驗。)
- @Deprecated:用於表示所修飾的元素(類、方法等)已過時。
- @SuppressWarnings:抑制編譯器警告
3、示例三:跟蹤程式碼依賴性,實現替代配置檔案功能
三、自定義註解
-
程式碼實現
public @interface MyAnnotation { String value() default "lzx"; }
-
說明
- 定義新的 Annotation 型別使用 @interface 關鍵字
- Annotation 的成員變數在 Annotation 定義中以無引數方法的形式來宣告。其方法名和返回值定義了該成員的名字和型別。我們稱為配置引數。型別只能 是八種基本資料型別 、String型別 、 Class型別 、 enum型別 、 Annotation 型別 、 以上所有型別的陣列
- 可以在定義 Annotation 的成員變數時為其指定初始值, 指定成員變數的初始值可使用 default 關鍵字
- 如果只有一個引數成員,建議使用引數名為value
- 如果定義的註解含有配置引數,那麼使用時必須指定引數值,除非它有預設值。格式是“引數名 = 引數值”,如果只有一個引數成員,且名稱為value, 可以省略“value=”
- 沒有成員定義的 Annotation 稱為標記; 包含成員變數的 Annotation 稱為後設資料 Annotation
- 自定義註解必須配上註解的資訊處理流程(使用反射)才有意義
四、JDk中的元註解
1、理解
- 對現有註解進行修飾的註解,叫元註解
- 對現有資料進行修飾的資料叫後設資料。例如,註解中
String name = "lzx"
,String name
就是後設資料
2、元註解
-
Retention
- 用於指定Annotation的宣告週期
- @Rentention 包含一個 RetentionPolicy 型別的成員變數, 使用 @Rentention 時必須為該 value 成員變數指定值:
- RetentionPolicy.SOURCE:在原始檔中有效(即原始檔保留),編譯器直接丟棄這種策略的註釋
- RetentionPolicy.CLASS:在class檔案中有效(即class保留) , 當執行 Java 程式時, JVM 不會保留註解。 這是預設值
- RetentionPolicy.RUNTIME:在執行時有效(即執行時保留),當執行 Java 程式時, JVM 會保留註釋。程式可以通過反射獲取該註釋
-
Target
- 指定被修飾的 Annotation 能用於 修飾哪些程式元素
-
Documented:指定被該元 Annotation 修飾的 Annotation 類將被 javadoc 工具提取成文件。預設情況下,javadoc是不包括註解的
-
Inherited:被它修飾的 Annotation 將具有繼承性。如果某個類使用 @Inherited 修飾的 Annotation, 則其子類將自動具有該註解
五、利用反射獲取註解資訊
(後續學到反射補充)
六、JDK8中註解新特性(瞭解)
1、可重複註解
2、可用於型別的註解
相關文章
- java註解Java
- 註解 javaJava
- Spring5:@Autowired註解、@Resource註解和@Service註解Spring
- Java註解詳解Java
- Java 註解詳解Java
- JAVA-註解(2)-自定義註解及反射註解Java反射
- 註解專題(一)Java元註解,內建註解Java
- Java中的註解-自定義註解Java
- JAVA 註解 AnnontationJava
- Java註解AnnotatonJava
- Java反射-註解Java反射
- Java™ 教程(註解)Java
- Java —— 註解(Annotation)Java
- java註解,反射Java反射
- Java Annotation 註解Java
- Java--註解Java
- Java 註解(Annotation)Java
- Java註解詳解「註解專案實戰」Java
- Java註解(Annotation)詳解Java
- 深入理解 Java 註解 [元註解(一)]Java
- 每個 Java 開發者都應該知道的 5 個註解Java
- Java程式設計師必須掌握的5個註解!Java程式設計師
- Java 8 註解探秘Java
- Java 註解完全解析Java
- 自定義JAVA註解Java
- Java 註解全面解析Java
- Java反射與註解Java反射
- java-Annotation註解Java
- 初識 Java 註解Java
- Java之註解(Annotation)Java
- Java學習_註解Java
- Java註解的使用Java
- Java 註解和反射Java反射
- Java基礎——註解Java
- Java註解全面解析Java
- java 自定義註解Java
- Java 自定義註解Java
- Java 註解介紹Java