一篇文章帶你入門java註解

註解

什麼是註解

  • Annotation是從JDK5.0開始引入的新技術
  • Annotation的作用:
    • 1.不是程序本身,可以對程序做出解釋(這一點和註釋(comment)沒什麼區別)
    • 2.可以被其他程序(比如:編譯器等)讀取

Annotation的格式:

​ 註解是以”@註釋名”在代碼中存在的,還可以添加一些參數值,例如:

​ @SuppressWarnings(value=“unchecked”)

Annotation在哪裡使用

​ 可以附加到package,class,method,field等上面,相當於給他們添加瞭額外的輔助信息,我們可以通過反射機制編程實現對這些元數據的訪問

內置註解

@Override:定義在Java.lang.Override中,此註釋隻適用於修飾方法,表示一個方法聲明打算重寫超類中的另一個方法聲明

public class Test extends Object{
	//@Override 重寫註解,必須是重寫超類的方法,不然會發生編譯器上的錯誤
    @Override
    public String toString() {
        return super.toString();
    }
}

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

	@Deprecated   //意思為方法已經過時,存在危險,或者有更好的方法
    public static void test01(){
        System.out.println("過時的");
    }
    public static void main(String[] args) {
        test01();
    }

雖然是過時或存在危險,但是依然可以調用此方法,

在這裡插入圖片描述

根據上面的圖片也會看到,如果被@Deprecated註釋上的方法,在調用的時候,會畫一點橫線

@suppressWarnings:定義在java.lang.SuppressWarnings中,用來抑制編譯時的警告信息,

​ 與前兩個註釋有所不同,你需要添加一個參數才能正常使用,這些參數都是已經定義好瞭的,我們選擇性的使 用就好瞭

√@SuppressWarnings(“all”)

√@SuppressWarnings(“unchecked”)

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

√等等

元註解

元註解的作用就是負責註解其他註解,Java定義瞭4個標準的meta-annotation類型,他們被用來提供對其他annotation類型作說明

這些類型和它們所支持的類在Java.lang.annotation包中可以找到(@Target@Retention@Documented@Inherited

@Target:用於描述註解的使用范圍(即:被描述的註解可以用在什麼地方)

@Retention:表示需要在什麼級別保存該註釋信息,用於描述註解的生命周期

(SOURCE<CLASS<RUNTIME)

@Document:說明該註解將被包含在Javadoc中

@Inherited:說明子類可以繼承父類中的該註解

//測試元註解
    @MyAnnotation
public class Test02 {
}
//定義一個註解
//Target  表示我們的註解可以用到哪些地方
@Target(value = {ElementType.METHOD,ElementType.TYPE}) //METHOD註解可以在方法TYPE可以在類
//Retention 表示我們的註解在什麼地方還有效
//runtime>class>sources
@Retention(value = RetentionPolicy.RUNTIME)
//Documented 表示是否將我們的註解生成在Javadoc中
@Documented
//子類可以繼承父類的註解
@Inherited
 @interface MyAnnotation{
}

自定義註解

使用**@interface**自定義註解時,自動繼承瞭java.lang.annotation.Annotation接口

分析:

@interface用來聲明一個註解,格式:public @interface 註解名{ 定義內容 }

其中的每一個方法實際上是聲明瞭一個配置參數

方法的名稱就是參數的名稱

返回值類型就是參數的類型(返回值隻能是基本類型,Class,String,enum)

可以通過default來聲明參數的默認值

如果隻有一個參數成員,一般參數名為value

註解元素必須要有值,我們定義註解元素時,經常使用空字符串,0作為默認值

實例

public class Test03 {
    //註解可以顯示賦值,如果沒有默認值,我們就必須給註解賦值
    @MyAnntotation2(schools = {"河北軟件","寬城職教"})
    public void Test(){}
    @MyAnntotation3("ccl")  //可以省略value
    public void Test1(){}
}
//多次參數的註解
@Target({ElementType.TYPE,ElementType.METHOD})  //可以用到哪裡
@Retention(RetentionPolicy.RUNTIME)   // 表示在什麼地方有效
@interface MyAnntotation2{
    //註解的參數:參數類型+參數名();
    String name() default "";
    int age() default 0;
    int id() default -1; //如果默認值為-1,代表不存在
    String[] schools();
}
//一個參數的註解
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnntotation3{
    String value() ;
}

如果註解的參數隻要有一個的時候,可以將參數名設為value,這樣在寫註解的時候,括號裡可以省略value參數名,而別的參數名需要寫上

@interface MyAnntotation3{
    String value() ;
}

總結

本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: