首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDK 5.0 內建註解詳解:@Override、@Deprecated 與 @SuppressWarnings

     編輯:Java 相關知識

@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 標籤說明替代方案

@Deprecated IDE 提示範例

@SuppressWarnings:壓制特定編譯警告

@SuppressWarnings("unchecked")
public void legacyCode() {
    List list = new ArrayList(); // 原始型別警告
    list.add("item");
}

常用參數值:

建議:僅在無法修正根本原因(如整合舊代碼)時局部使用,避免掩蓋真實問題。

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;
}

結合反射可構建簡易測試框架或配置驅動邏輯。

最佳實踐總結

  1. @Override:所有覆寫/實作方法強制加註
  2. @Deprecated:棄用 API 必加,並文檔說明替代方案
  3. @SuppressWarnings:最小範圍、具體參數、附註釋說明原因
  4. 善用 IDE 自動加註功能(Eclipse:Source → Override/Implement Methods)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
參數值抑制警告類型
unchecked未檢查的泛型轉換
deprecation使用已過時 API
serial缺少 serialVersionUID
all所有警告