@Override:防止覆寫錯誤的守門員
問題情境
子類別意圖覆寫父類別方法,卻因拼字錯誤(如 test1 寫成 testl)導致變成「新增方法」而非「覆寫」。編譯器不會報錯,執行時仍呼叫父類別實作,極難除錯。
解決方案
public class B extends A {
@Override
public void test1() {
super.test1();
}
}
加上 @Override 後,若方法簽名與父類別不符,編譯器立即報錯:「方法未覆寫超類別方法」,於開發期即攔截錯誤。
適用場景
- 覆寫父類別方法
- 實作介面方法(Java 6+ 支援)
- 所有「意圖覆寫」的方法建議均加註
@Deprecated:標記過時 API
@Deprecated
public void oldMethod() {
// 舊實作
}
效果:
- 編譯器對呼叫該方法處發出警告
- JavaDoc 生成「已過時」標記
- IDE 顯示刪除線樣式提醒開發者避免使用
- 配合 JavaDoc
@deprecated 標籤說明替代方案

@SuppressWarnings:壓制特定編譯警告
@SuppressWarnings("unchecked")
public void legacyCode() {
List list = new ArrayList(); // 原始型別警告
list.add("item");
}
常用參數值:
| 參數值 | 抑制警告類型 |
| unchecked | 未檢查的泛型轉換 |
| deprecation | 使用已過時 API |
| serial | 缺少 serialVersionUID |
| all | 所有警告 |
建議:僅在無法修正根本原因(如整合舊代碼)時局部使用,避免掩蓋真實問題。
JDK 5.0 註解機制核心概念
- 元註解:定義註解的註解(
@Retention、@Target、@Documented、@Inherited)
- 保留策略:SOURCE(源碼期)、CLASS(編譯期,預設)、RUNTIME(運行期可反射獲取)
- 目標範圍:TYPE、METHOD、FIELD、PARAMETER、CONSTRUCTOR、LOCAL_VARIABLE 等
自訂註解範例
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestCase {
String description() default "";
int priority() default 1;
}
結合反射可構建簡易測試框架或配置驅動邏輯。
最佳實踐總結
- @Override:所有覆寫/實作方法強制加註
- @Deprecated:棄用 API 必加,並文檔說明替代方案
- @SuppressWarnings:最小範圍、具體參數、附註釋說明原因
- 善用 IDE 自動加註功能(Eclipse:Source → Override/Implement Methods)
- 上一篇文章: Java 實作簡易計算機:Swing GUI 範例教學
- 下一篇文章: Java 實作合併排序演算法:完整原始碼與原理解析
Copyright ©
程式碼之家 All Rights Reserved