註解

註解

1、概述

  • 定義:註解Annotation),也叫元數據。一種代碼級別的說明。它是JDK1.5及以後版本引入的一個特性,與類、接口、枚舉是在同一個層次。它可以聲明在包、類、字段、方法、局部變量、方法參數等的前面,用來對這些元素進行說明、註釋

  • 作用分類:

    • ①編寫文檔:通過代碼裏標識的元數據生成文檔【生成文檔doc文檔】

    • ② 代碼分析:通過代碼裏標識的元數據對代碼進行分析【使用反射】

    • ③編譯檢查:通過代碼裏標識的元數據讓編譯器能夠實現基本的編譯檢查【Override】

  • 註解的格式:

    @註釋名(參數名=參數值,...)

    還可以添加一些參數:@註釋名(參數名=參數值,...)

2、內置註解

  • @Override:定義在 java.long.Override 中,此註解只適用於修飾方法,表示一個方法重寫超類中的另一個方法。

  • @Deprecated:定義在 java.long.Deprecated 中,此註釋可以修飾方法、屬性、類,表示不鼓勵程序員使用這樣的元素,通常是因爲它很危險或存在更好的選擇。

  • @SuppressWarnings:定義在 java.long.SuppressWarnings 中,用來取消顯示指定編譯器警告

    • 此註解必須加參數才能使用,示例:

      抑制單類型的警告:

      @SuppressWarnings(“unchecked”)

      抑制多類型的警告:

      @SuppressWarnings(value={“unchecked”, “rawtypes”})

      抑制所有類型的警告:

      @SuppressWarnings(“all”)

    • 抑制警告的參數

參數 用途
all to suppress all warnings(抑制所有警告)
boxing to suppress warnings relative to boxing/unboxing operations(要抑制與箱/非裝箱操作相關的警告)
cast to suppress warnings relative to cast operations(爲了抑制與強制轉換操作相關的警告)
dep-ann to suppress warnings relative to deprecated annotation(要抑制相對於棄用註釋的警告)
deprecation to suppress warnings relative to deprecation(要抑制相對於棄用的警告)
fallthrough to suppress warnings relative to missing breaks in switch statements(在switch語句中,抑制與缺失中斷相關的警告)
finally to suppress warnings relative to finally block that don’t return(爲了抑制警告,相對於最終阻止不返回的警告)
hiding to suppress warnings relative to locals that hide variable(爲了抑制本地隱藏變量的警告)
incomplete-switch to suppress warnings relative to missing entries in a switch statement (enum case)(爲了在switch語句(enum案例)中抑制相對於缺失條目的警告)
nls to suppress warnings relative to non-nls string literals(要抑制相對於非nls字符串字面量的警告)
null to suppress warnings relative to null analysis(爲了抑制與null分析相關的警告)
rawtypes to suppress warnings relative to un-specific types when using generics on class params(在類params上使用泛型時,要抑制相對於非特異性類型的警告)
restriction to suppress warnings relative to usage of discouraged or forbidden references(禁止使用警告或禁止引用的警告)
serial to suppress warnings relative to missing serialVersionUID field for a serializable class(爲了一個可串行化的類,爲了抑制相對於缺失的serialVersionUID字段的警告)
static-access o suppress warnings relative to incorrect static access(o抑制與不正確的靜態訪問相關的警告)
synthetic-access to suppress warnings relative to unoptimized access from inner classes(相對於內部類的未優化訪問,來抑制警告)
unchecked to suppress warnings relative to unchecked operations(相對於不受約束的操作,抑制警告)
unqualified-field-access to suppress warnings relative to field access unqualified(爲了抑制與現場訪問相關的警告)
unused to suppress warnings relative to unused code(抑制沒有使用過代碼的警告)
  • 演示:

    • 未抑制警告前:
      在這裏插入圖片描述

    • 抑制警告後
      在這裏插入圖片描述

3、 元註解

  • 負責註解其他註解,Java定義了4個標準的meta-annotation類型,它們被用來對其他annotation類型作說明。
  • 這些註解所支持的類可在 java.long.annotation 包中找到。
    • @Target:用於描述註解的適用範圍
    • @Retention:用於描述註解的生命週期,表示需要在什麼級別保存該註解;(SOURCE < CLASS < RUNTIME)
    • **@Documented:**指示該註解將通過 javadoc 和類似的默認工具進行文檔化;
    • @Inherited:指示該註解被自動繼承

4、自定義註解

import java.lang.annotation.*;

@MyAnnotation(name = "Test02",id=1)
public class Test02 {
    public static void main(String[] args) {
        test();
    }

    //註解參數有默認值可以不顯式賦值,沒有默認值必須要顯式賦值
    @MyAnnotation(name="test")
    private static void test(){
        System.out.println("MyAnnotation");
    }
}

//描述註解的適用範圍
@Target(value={ElementType.METHOD,ElementType.TYPE})

//描述註解的生命週期 SOURCE < CLASS < RUNTIME
@Retention(value=RetentionPolicy.RUNTIME)

@Documented //可以將此註解生成在javadoc文檔中
@Inherited  //此註解可被子類繼承

//自定義註解格式:@interface 註解名{}
@interface MyAnnotation{
    //定義註解的參數 格式:參數類型 參數名();
    String name();
    int id()default -1;//默認值爲 -1
}
  • 如果註解只有一個參數,則參數名一般定義爲 value ,在使用該註解時,參數名可以省略不寫,直接寫值。

    • 例:

    @SuppressWarnings(value="all")等價於@SuppressWarnings("all")

發佈了55 篇原創文章 · 獲贊 31 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章