| 類型 | 特徵 | 語法範例 |
| 標記註解 | 無成員變數,僅名稱識別 | @MarkerAnnotation |
| 單一值註解 | 提供單一資料,可用簡寫語法 | @SingleValue("my data") |
| 完整註解 | 多個資料成員 | @Full(var1="v1", var2="v2") |
陣列值範例
@TODOItems({
@TODO(severity=TODO.CRITICAL, item="Add mean calculation", assignedTo="Brett"),
@TODO(severity=TODO.IMPORTANT, item="Print usage message", assignedTo="Brett"),
@TODO(severity=TODO.LOW, item="Roll new website page", assignedTo="Jason")
})
TODOItems 為單一值註解 (值為陣列),陣列元素為完整註解 @TODO。逗號分隔陣列元素與成員值。
三大內建註解詳解
1. @Override — 確保方法覆寫
僅適用於方法。指示該方法覆寫父類方法。編譯器驗證:若父類無同簽名方法 → 編譯錯誤。
public class OverrideTester {
@Override public String toString() { return super.toString() + " [Override Tester]"; }
@Override public int hashCode() { return toString().hashCode(); }
}
實戰價值:深夜編碼拼寫錯誤 (如 hashCode 寫成 hasCode) 會被編譯器即時攔截:
@Override public int hasCode() { ... } // 編譯錯誤:父類無 hasCode 方法可覆寫

2. @Deprecated — 標記不建議使用
標記註解,建議與方法宣告同行:
@Deprecated public void doSomething() { /* ... */ }
public void doSomethingElse() { /* 更好的實作 */ }
單獨編譯無反應。但**調用/覆寫**被標記方法時,編譯器發出警告 (需啟用 -deprecated 或 -Xlint:deprecated):

3. @SuppressWarnings — 壓制特定編譯警告
含成員變數,值為警告類型陣列。解決泛型等新特性對舊代碼產生的大量無關警告。
public void nonGenericsMethod() {
List wordList = new ArrayList(); // 無類型資訊
wordList.add("foo"); // 產生 unchecked 警告
}

加上註解消除:
@SuppressWarnings(value={"unchecked"})
public void nonGenericsMethod() { /* ... */ }
可一次壓制多種警告:@SuppressWarnings(value={"unchecked", "fallthrough"})。極大簡化遷舊代碼/混合版本開發的警告噪音。
總結
註解語法雖新但極簡單。三大內建註解雖簡單卻威力巨大:@Override 捕捉覆寫錯誤、@Deprecated 管理 API 演進、@SuppressWarnings 靈活控制警告噪音。元資料正成為不可或缺的開發利器。第二部分將深入自訂註解類型定義、編譯器識別機制、以及「對註解的註解」元註解世界。
- 上一篇文章: Java 註解 (Annotation) 進階:自訂註解類型、成員預設值與元註解完整指南
- 下一篇文章: Windows Server 2003 下 Tomcat 控制台輸出卡住問題:快速編輯模式導致線程阻塞
Copyright ©
程式碼之家 All Rights Reserved