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

Java 三大核心內置註解:@Override、@Deprecated、@SuppressWarnings 實戰詳解

     編輯:Java 相關知識

註解簡介

JDK 5 引入三大標準註解,均為源碼級(SOURCE 保留策略),供編譯器檢查與 IDE 提示,不進入運行時。

1. @Override:強制檢查重寫

作用

標註方法必須重寫父類/實現接口的方法。拼寫錯誤、參數不匹配、父類無此方法時編譯報錯。

代碼示例

public class OverrideDemo {
    @Override
    public String toString() {
        return super.toString() + " | Override 測試";
    }
    
    // @Override
    // public void tostring() { } // 編譯錯誤:method does not override...
}

注意:JDK 5 實現接口方法不能加 @Override,JDK 6+ 已放開。

2. @Deprecated:標記過時

作用

告知調用者:該元素不再推薦使用,可能在未來版本移除。編譯器會對調用處發出警告。

代碼示例

public class LegacyApi {
    @Deprecated
    public void oldMethod() {
        System.out.println("舊方法,請改用 newMethod()");
    }
    
    public void newMethod() { /* ... */ }
}

// 調用處
public class Client {
    public static void main(String[] args) {
        new LegacyApi().oldMethod(); // 編譯警告:oldMethod() is deprecated
    }
}

3. @SuppressWarnings:壓制警告

作用

指示編譯器忽略特定警告。常用值:unchecked(泛型未檢查轉換)、deprecation(使用過時 API)、rawtypes(原始類型)。

代碼示例

public class WarningDemo {
    // 壓制調用過時方法的警告
    @SuppressWarnings("deprecation")
    public void useOldApi() {
        new LegacyApi().oldMethod(); // 無警告
    }
    
    // 壓制多類別警告
    @SuppressWarnings({"unchecked", "rawtypes"})
    public void rawTypesDemo() {
        List list = new ArrayList(); // 無警告
        list.add("test");
    }
}

最佳實踐

  • 最小範圍原則:儘量標註在具體方法/變量上,而非類級別。
  • 註釋原因:旁邊加註釋說明為何必須壓制(如第三方庫無泛型)。
  • 定期清理:代碼審查時檢查是否可移除(如已升級依賴)。

元註解:自定義註解的基石

四大元註解用於定義註解的生命周期、作用目標、文檔化、繼承性。

元註解作用關鍵屬性
@Target限定註解可用位置ElementType.TYPE/FIELD/METHOD/PARAMETER/CONSTRUCTOR/LOCAL_VARIABLE/ANNOTATION_TYPE
@Retention定義保留階段RetentionPolicy.SOURCE/CLASS/RUNTIME
@Documented標註進 Javadoc無
@Inherited允許子類繼承僅對 TYPE 有效

自定義註解示例

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ApiInfo {
    String author() default "Unknown";
    String version() default "1.0";
    String description() default "";
}

// 使用
public class MyService {
    @ApiInfo(author = "ZhangSan", version = "2.1", description = "用戶查詢")
    public User getUser(Long id) { ... }
}

總結

  • @Override:防呆神器,重寫必加。
  • @Deprecated:演進利器,配合 Javadoc @deprecated 說明替代方案。
  • @SuppressWarnings:最後手段,嚴格限制範圍並說明理由。
  • 掌握元註解,即可構建領域專屬註解體系(如權限校驗、參數驗證、API 文檔生成)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved