Java註解(Annotation)簡介-1

從 Java 5 版本之後可以在源代碼中嵌入一些補充信息,這種補充信息稱為註解(Annotation),是 Java 平臺中非常重要的一部分。註解都是 @ 符號開頭的,例如我們在學習方法重寫時使用過的 @Override 註解。同 Class 和 Interface 一樣,註解也屬於一種類型。

Annotation 可以翻譯為“註解”或“註釋”,一般翻譯為“註解”,因為“註釋”一詞已經用於說明“//”、“/**...*/”和“/*...*/”等符號了,這裡的“註釋”是英文 Comment 翻譯。

註解並不能改變程序的運行結果,也不會影響程序運行的性能。有些註解可以在編譯時給用戶提示或警告,有的註解可以在運行時讀寫字節碼文件信息。
註解可以元數據這個詞來描述,即一種描述數據的數據。所以可以說註解就是源代碼的元數據。例如以下代碼:

<code>@Overridepublic String toString() {    return "Java教程";}/<code>

上面的代碼重寫了 Object 類的 toString() 方法並使用了 @Override 註解。如果不使用 @Override 註解標記代碼,程序也能夠正常執行。那麼這麼寫有什麼好處嗎?事實上,使用 @Override 註解就相當於告訴編譯器這個方法是一個重寫方法,如果父類中不存在該方法,編譯器便會報錯,提示該方法沒有重寫父類中的方法。這樣可以防止不小心拼寫錯誤造成麻煩。
例如,在沒有使用 @Override 註解的情況下,將 toString() 寫成了 toStrring(),這時程序依然能編譯運行,但運行結果會和所期望的結果大不相同。
註解常見的作用有以下幾種:

  1. 生成幫助文檔。這是最常見的,也是 Java 最早提供的註解。常用的有 @see、@param 和 @return 等;
  2. 跟蹤代碼依賴性,實現替代配置文件功能。比較常見的是 Spring 2.5 開始的基於註解配置。作用就是減少配置。現在的框架基本都使用了這種配置來減少配置文件的數量;
  3. 在編譯時進行格式檢查。如把 @Override 註解放在方法前,如果這個方法並不是重寫了父類方法,則編譯時就能檢查出。


無論是哪一種註解,本質上都一種數據類型,是一種接口類型。到 Java 8 為止 Java SE 提供了 11 個內置註解。其中有 5 個是基本註解,它們來自於 java.lang 包。有 6 個是元註解,它們來自於 java.lang.annotation 包,自定義註解會用到元註解。
提示:元註解就是負責註解其他的註解。
基本註解包括:@Override、@Deprecated、@SuppressWarnings、@SafeVarargs 和 @FunctionalInterface。後面我們會逐一介紹。


分享到:


相關文章: