溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java中的注解是什么意思

發(fā)布時(shí)間:2021-08-05 11:08:55 來源:億速云 閱讀:274 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要介紹“java中的注解是什么意思”,在日常操作中,相信很多人在java中的注解是什么意思問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”java中的注解是什么意思”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

目錄
  • 注解

    • 什么是注解

    • 內(nèi)置注解

    • 元注解

    • 自定義注解

      • 實(shí)例


注解

什么是注解

  • Annotation是從JDK5.0開始引入的新技術(shù)

  • Annotation的作用:

    • 1.不是程序本身,可以對(duì)程序做出解釋(這一點(diǎn)和注釋(comment)沒什么區(qū)別)

    • 2.可以被其他程序(比如:編譯器等)讀取

Annotation的格式:

注解是以"@注釋名"在代碼中存在的,還可以添加一些參數(shù)值,例如:

@SuppressWarnings(value=“unchecked”)

Annotation在哪里使用

可以附加到package,class,method,field等上面,相當(dāng)于給他們添加了額外的輔助信息,我們可以通過反射機(jī)制編程實(shí)現(xiàn)對(duì)這些元數(shù)據(jù)的訪問

內(nèi)置注解

@Override:定義在Java.lang.Override中,此注釋只適用于修飾方法,表示一個(gè)方法聲明打算重寫超類中的另一個(gè)方法聲明

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

@Deprecated:定義在Java.lang.Deprecated中,此注釋可以用于修飾方法,屬性,類,表示不鼓勵(lì)程序員使用這樣的元素,通常是因?yàn)樗芪kU(xiǎn)或者存在更好的選擇

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

雖然是過時(shí)或存在危險(xiǎn),但是依然可以調(diào)用此方法,

java中的注解是什么意思

根據(jù)上面的圖片也會(huì)看到,如果被@Deprecated注釋上的方法,在調(diào)用的時(shí)候,會(huì)畫一點(diǎn)橫線

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

與前兩個(gè)注釋有所不同,你需要添加一個(gè)參數(shù)才能正常使用,這些參數(shù)都是已經(jīng)定義好了的,我們選擇性的使 用就好了

√@SuppressWarnings(“all”)

√@SuppressWarnings(“unchecked”)

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

√等等

元注解

元注解的作用就是負(fù)責(zé)注解其他注解,Java定義了4個(gè)標(biāo)準(zhǔn)的meta-annotation類型,他們被用來提供對(duì)其他annotation類型作說明

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

@Target:用于描述注解的使用范圍(即:被描述的注解可以用在什么地方)

@Retention:表示需要在什么級(jí)別保存該注釋信息,用于描述注解的生命周期

(SOURCE<CLASS<RUNTIME)

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

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

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

自定義注解

使用**@interface**自定義注解時(shí),自動(dòng)繼承了java.lang.annotation.Annotation接口

分析:

@interface用來聲明一個(gè)注解,格式:public @interface 注解名{ 定義內(nèi)容 }

其中的每一個(gè)方法實(shí)際上是聲明了一個(gè)配置參數(shù)

方法的名稱就是參數(shù)的名稱

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

可以通過default來聲明參數(shù)的默認(rèn)值

如果只有一個(gè)參數(shù)成員,一般參數(shù)名為value

注解元素必須要有值,我們定義注解元素時(shí),經(jīng)常使用空字符串,0作為默認(rèn)值

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

如果注解的參數(shù)只要有一個(gè)的時(shí)候,可以將參數(shù)名設(shè)為value,這樣在寫注解的時(shí)候,括號(hào)里可以省略value參數(shù)名,而別的參數(shù)名需要寫上

@interface MyAnntotation3{
    String value() ;
}

到此,關(guān)于“java中的注解是什么意思”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI