Java註解其實是代碼里的特殊標記,使用其他工具可以對其進行處理。註解是一種元數據,起到了描述、配置的作用,生成文檔,所有的註解都隱式地擴展自java.lang.annotation.Annotation。註解可能使用註解來自動生成附屬文件,如部署描述符和Bean信息類,還可以用於自動生成測試、日誌... ...
Java註解其實是代碼里的特殊標記,使用其他工具可以對其進行處理。註解是一種元數據,起到了描述、配置的作用,生成文檔,所有的註解都隱式地擴展自java.lang.annotation.Annotation。註解可能使用註解來自動生成附屬文件,如部署描述符和Bean信息類,還可以用於自動生成測試、日誌、事務語義等代碼。可以註解方法、類、成員、局部變數等。
註解語法
註解是由註解介面來定義的,註解的定義很像介面的定義,與其他Java介面一樣,註解也將會編譯成class文件.在註解中,一般都會包含一些元素以表示某些值,註解的元素看起來就像介面中的方法,可以為註解元素指定一些值。
modifiers @interface AnnotationName
{
elementDeclaration1;
elementDeclaration2;
}
舉例來說
public @interface Message
{
String sendTo() default "[none]";
int level()=0;
}
每個註解都有下麵的格式
@AnnotationName(elementName1=value1,elementName2=value2)
舉例來說
@Message(sendTo="Jack",level=5)
註解元素的類型
- 基本類型
- String
- Class
- enum類型
- 註解類型
- 以上類型的數組
註解分類
根據註解參數的個數可以分為:
- 標記註解
沒有元素的註解成為標記註解 - 單值註解
- 完整註解
根據註解使用用途和方法可以分為:
- 內置系統註解
- 元註解
- 自定義註解
註解舉例
java.lang、java.lang.annotation和javax.annotation包中定義了很多的註解介面,其中四種是元註解,還有三種標準註解,其中有用於編譯的註解
名稱 | 說明 |
---|---|
@Override | 檢查是否覆蓋了來自超類的方法 |
@Deprecated | 抑制過時的項的警告 |
@SuppressWarning | 抑制編譯器某種特殊類型的警告 |
@Generated | 目的是代碼生成工具使用 |
有用於資源管理的註解
名稱 | 說明 |
---|---|
@PostConstrut和@PreDestory | 用於控制對象生命周期的環境中,標記了這些註解的方法應該在對象被構建之後,或者在對象移除之前調用 |
@Resource | 用於資源註入 |
元註解是用於註解其他註解的註解
名稱 | 說明 |
---|---|
@Retention | 定義了該Annotation被保留的時間長短 |
@Target | 說明瞭Annotation所修飾的範圍、可用於package、type、類型成員、方法參數和本地變數 |
@Documented | 用於描述其他類型的annotation應該作為被標註的程式成員的公共API,可以被javadoc此類的工具文檔化 |
@Inherit | 闡述了某個被標註的類型是被繼承的 |