註解
定義:註解(Annotation),也叫元數據。一種代碼級別的說明。它是JDK1.5及以後版本引入的一個特性,與類、接口、枚舉是在同一個層次。它可以聲明在包、類、字段、方法、局部變量、方法參數等的前面,用來對這些元素進行說明,註釋。
註解的功能建立在反射之上,通過註解,我們可以對程序進行註釋操作。
JDK1.5之後的系統中,內置了三個註解:
@Override
如果有方法需要子類覆寫,那麼會要求子類的方法名稱,參數的類型,個數,順序都要完全一致,然而在實際開發中,編寫子類的時候很可能會由於手誤導致覆寫錯誤。
比如:
原本打算覆寫toString,卻由於手誤寫成了tostring。s由於失誤寫成了小寫,而java是區分大小寫的,所以編譯器會認爲tostring是一個新的方法,而不會產生編譯錯誤。爲了保證子類方法的覆寫不會出錯,jdk內置了@Override註解。這個註解會告訴編譯器,這個方法是覆寫父類的,一旦檢測到子類的方法和父類不一致則會引發編譯器錯誤:Method does not override method from its superclass
我們點進去看看@Override註解的源碼,會發現RetentionPolicy.SOURCE,這說明@Override註解是一個作用在源碼階段的註解。
RetentionPolicy用來表示註解的作用週期,共有三種類型:源碼階段,class文件階段,運行時階段。
這個後面再講。
public enum RetentionPolicy {
SOURCE, //源文件階段
CLASS, //class文件階段
RUNTIME; //運行時階段
private RetentionPolicy() {
}
}
@Deprecated //用來表示一個方法已經過時的註解
public class Study {
//原本打算覆寫toString
public String tostring() {
return "study";
}
@Override
public String toString() {
return super.toString();
}
@Deprecated //表明這個方法已經過時,不建議使用
public void function1() {
}
}
在使用的時候,會發現方法被橫線給槓掉了。
這個註解只是用來告訴使用者這個方法已經不建議使用,這時候編譯器會產生警告信息,因爲使用者調用的方法已經過時。過時的方法還保留着主要是爲了對過去使用過此方法的項目保持兼容。
@SuppressWarnings(“unsed”) //忽略警告
我們經常會發現這種定義了變量又沒有使用的情況,這種情況下編譯是沒有問題的,但會有警告信息
如果我們要忽略這種警告信息,就要用到@SuppressWarnings註解
這裏是忽略了“unused”類型的警告
除了“unused”類型,還有很多其它類型
忽略註解關鍵字 | 關鍵字含義 |
---|---|
all | to suppress all warnings (抑制所有警告) |
boxing | to suppress warnings relative to boxing/unboxing operations(抑制裝箱、拆箱操作時候的警告) |
cast | to suppress warnings relative to cast operations (抑制映射相關的警告) |
dep-ann | to suppress warnings relative to deprecated annotation(抑制啓用註釋的警告) |
deprecation | to suppress warnings relative to deprecation(抑制過期方法警告) |
fallthrough | to suppress warnings relative to missing breaks in switch statements(抑制確在switch中缺失breaks的警告) |
finally | to suppress warnings relative to finally block that don’t return (抑制finally模塊沒有返回的警告) |
hiding | to suppress warnings relative to locals that hide variable() |
incomplete-switch | to suppress warnings relative to missing entries in a switch statement (enum case)(忽略沒有完整的switch語句) |
nls | to suppress warnings relative to non-nls string literals(忽略非nls格式的字符) |
null | to suppress warnings relative to null analysis(忽略對null的操作) |
rawtypes | to suppress warnings relative to un-specific types when using generics on class params(使用generics時忽略沒有指定相應的類型) |
restriction | to suppress warnings relative to usage of discouraged or forbidden references |
serial | to suppress warnings relative to missing serialVersionUID field for a serializable class(忽略在serializable類中沒有聲明serialVersionUID變量) |
static-access | to suppress warnings relative to incorrect static access(抑制不正確的靜態訪問方式警告) |
synthetic-access | to suppress warnings relative to unoptimized access from inner classes(抑制子類沒有按最優方法訪問內部類的警告) |
unchecked | to suppress warnings relative to unchecked operations(抑制沒有進行類型檢查操作的警告) |
unqualified-field-access | to suppress warnings relative to field access unqualified (抑制沒有權限訪問的域的警告) |
unused | to suppress warnings relative to unused code (抑制沒被使用過的代碼的警告) ---------- |
以上就是jdk1.5以後,系統內置的三個註解的介紹啦(#^ . ^#)