annotation壹般作為壹種輔助途徑,應用在軟件框架或工具中,在這些工具類中根據不同的 annontation註解信息采取不同的處理過程或改變相應程序元素(類、方法及成員變量等)的行為。
例如:Junit、Struts、Spring等流行工具框架中均廣泛使用了annontion。使代碼的靈活性大提高。
從java5版本開始,自帶了三種標準annontation類型,
(1)、Override
java.lang.Override 是壹個marker annotation類型,它被用作標註方法。它說明了被標註的方法重載了父類的方法,起到了斷言的作用。如果我們使用了這種annotation在壹個沒有覆蓋父類方法的方法時,java編譯器將以壹個編譯錯誤來警示。
這個annotaton常常在我們試圖覆蓋父類方法而確又寫錯了方法名時加壹個保障性的校驗過程。
(2)、Deprecated
Deprecated也是壹種marker annotation。當壹個類型或者類型成員使用@Deprecated修飾的話,編譯器將不鼓勵使用這個被標註的程序元素。所以使用這種修飾具有壹定的 “延續性”:如果我們在代碼中通過繼承或者覆蓋的方式使用了這個過時的類型或者成員,雖然繼承或者覆蓋後的類型或者成員並不是被聲明為@Deprecated,但編譯器仍然要報警。
註意:@Deprecated這個annotation類型和javadoc中的 @deprecated這個tag是有區別的:前者是java編譯器識別的,而後者是被javadoc工具所識別用來生成文檔(包含程序成員為什麽已經過時、它應當如何被禁止或者替代的描述)。
(3)、SuppressWarnings
此註解能告訴Java編譯器關閉對類、方法及成員變量的警告。
有時編譯時會提出壹些警告,對於這些警告有的隱藏著Bug,有的是無法避免的,對於某些不想看到的警告信息,可以通過這個註解來屏蔽。
SuppressWarning不是壹個marker annotation。它有壹個類型為String[]的成員,這個成員的值為被禁止的警告名。對於javac編譯器來講,被-Xlint選項有效的警告名也同樣對@SuppressWarings有效,同時編譯器忽略掉無法識別的警告名。