欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中使用注解的實(shí)例詳解

 更新時(shí)間:2023年06月05日 14:35:45   作者:John_rush  
注解(Annotation)是放在Java源碼的類(lèi)、方法、字段、參數(shù)前的一種特殊“注釋”,這篇文章主要介紹了Java中如何使用注解,需要的朋友可以參考下

注解(Annotation)是放在Java源碼的類(lèi)、方法、字段、參數(shù)前的一種特殊“注釋”

注釋會(huì)被編譯器直接忽略,注解則可以被編譯器打包進(jìn)入class文件,因此,注解是一種用作標(biāo)注的“元數(shù)據(jù)”。

注解的作用

注解可以分為三類(lèi):

1、內(nèi)置注解(由編譯器使用的注解),如:

  • @Override:讓編譯器檢查該方法是否正確地實(shí)現(xiàn)了覆寫(xiě);
  • @SuppressWarnings:告訴編譯器忽略此處代碼產(chǎn)生的警告。

這類(lèi)注解不會(huì)被編譯進(jìn)入.class文件,它們?cè)诰幾g后就被編譯器扔掉了。

2、由工具處理.class文件使用的注解,比如有些工具會(huì)在加載class的時(shí)候,對(duì)class做動(dòng)態(tài)修改,實(shí)現(xiàn)一些特殊的功能。這類(lèi)注解會(huì)被編譯進(jìn)入.class文件,但加載結(jié)束后并不會(huì)存在于內(nèi)存中。這類(lèi)注解只被一些底層庫(kù)使用,一般我們不必自己處理。

3、在程序運(yùn)行期能夠讀取的注解,它們?cè)诩虞d后一直存在于JVM中,這也是最常用的注解。例如,一個(gè)配置了@PostConstruct的方法會(huì)在調(diào)用構(gòu)造方法后自動(dòng)被調(diào)用(這是Java代碼讀取該注解實(shí)現(xiàn)的功能,JVM并不會(huì)識(shí)別該注解)。

注解的定義

元注解

有一些注解可以修飾其他注解,這些注解就稱(chēng)為元注解(meta annotation)。Java標(biāo)準(zhǔn)庫(kù)已經(jīng)定義了一些元注解,我們只需要使用元注解,通常不需要自己去編寫(xiě)元注解。

@Target

定義注解能夠被應(yīng)用于源碼的哪些位置

// 定義注解 @Report 可用在方法上
@Target(ElementType.METHOD)
public @interface MyAnnotation1 {
    int type() default 0;
    String level() default "info";
    String value() default "";
}
// 定義注解 @Report 可用在方法或字段上
@Target({
    ElementType.METHOD,
    ElementType.FIELD
})
public @interface MyAnnotation2 {
    ...
}

@Retention

定義注解的生命周期,默認(rèn)為 CLASS,使用最多一般是 RUNTIME

  • 僅編譯期:RetentionPolicy.SOURCE
  • 僅class文件:RetentionPolicy.CLASS
  • 運(yùn)行期:RetentionPolicy.RUNTIME
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    int type() default 0;
    String level() default "info";
    String value() default "";
}

@Repeatable

定義注解是否可重復(fù)

@Repeatable(Reports.class)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
    int type() default 0;
    String level() default "info";
    String value() default "";
}

@Inherited

定義子類(lèi)是否可繼承父類(lèi)定義的注解

@Inherited
@Target(ElementType.TYPE)
public @interface MyAnnotation {
    int type() default 0;
    String level() default "info";
    String value() default "";
}

定義注解

public @interface xxx {...}
  • @interface 定義注解
  • 添加參數(shù)、默認(rèn)值
  • 用元注解配置注解
// 用元注解配置注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
// 用 @interface 定義注解
public @interface MyAnnotation {
    // 注解的參數(shù)
    int type() default 0;
    String level() default "info";
    String value() default "";
}
  • 定義一個(gè)注解時(shí),還可以定義配置參數(shù)。配置參數(shù)可以包括:基本類(lèi)型、String、Class、枚舉類(lèi)型。
  • 可以使用 default 來(lái)聲明參數(shù)的默認(rèn)值
  • 最常用的參數(shù)定義為value(),推薦所有參數(shù)都盡量設(shè)置默認(rèn)值
  • 必須設(shè)置@Target@Retention,@Retention一般設(shè)置為RUNTIME,便于運(yùn)行期讀取該注解

到此這篇關(guān)于Java中如何使用注解的文章就介紹到這了,更多相關(guān)java注解使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring 跨域配置請(qǐng)求詳解

    Spring 跨域配置請(qǐng)求詳解

    這篇文章主要介紹了Spring 跨域配置請(qǐng)求詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • java簡(jiǎn)單實(shí)現(xiàn)八叉樹(shù)圖像處理代碼示例

    java簡(jiǎn)單實(shí)現(xiàn)八叉樹(shù)圖像處理代碼示例

    這篇文章主要介紹了java簡(jiǎn)單實(shí)現(xiàn)八叉樹(shù)圖像處理代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • springboot+VUE前后端分離實(shí)現(xiàn)疫情防疫平臺(tái)JAVA

    springboot+VUE前后端分離實(shí)現(xiàn)疫情防疫平臺(tái)JAVA

    本文主要使用了Java、springmvc、VUE、node.js、mybatis、mysql、tomcat、jquery、layui、bootstarp、JavaScript、html、css、jsp、log4j等一些常見(jiàn)的基本技術(shù),實(shí)現(xiàn)一個(gè)疫情防疫小平臺(tái)
    2021-08-08
  • Spring Data Jpa實(shí)現(xiàn)分頁(yè)和排序代碼實(shí)例

    Spring Data Jpa實(shí)現(xiàn)分頁(yè)和排序代碼實(shí)例

    本篇文章主要介紹了Spring Data Jpa實(shí)現(xiàn)分頁(yè)和排序代碼實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-03-03
  • SpringBoot全局異常處理方式

    SpringBoot全局異常處理方式

    本文詳細(xì)介紹了Spring?Boot中異常處理的多種方案,包括基于請(qǐng)求轉(zhuǎn)發(fā)、異常處理器、過(guò)濾器等方式,并對(duì)其特點(diǎn)、實(shí)現(xiàn)方式和適用場(chǎng)景進(jìn)行了詳細(xì)介紹,作者推薦了基于請(qǐng)求轉(zhuǎn)發(fā)和異常處理器+請(qǐng)求轉(zhuǎn)發(fā)補(bǔ)充的方案,認(rèn)為它們能實(shí)現(xiàn)統(tǒng)一的全局異常處理,并能自定義統(tǒng)一響應(yīng)信息格式
    2024-12-12
  • Java基礎(chǔ)之集合Set詳解

    Java基礎(chǔ)之集合Set詳解

    這篇文章主要介紹了Java基礎(chǔ)之集合Set詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • spring boot整合shiro安全框架過(guò)程解析

    spring boot整合shiro安全框架過(guò)程解析

    這篇文章主要介紹了spring boot整合shiro安全框架過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java實(shí)現(xiàn)俄羅斯方塊的源碼分享

    Java實(shí)現(xiàn)俄羅斯方塊的源碼分享

    俄羅斯方塊是一個(gè)最初由阿列克謝帕吉特諾夫在蘇聯(lián)設(shè)計(jì)和編程的益智類(lèi)視頻游戲。本文將利用Java語(yǔ)言實(shí)現(xiàn)這一經(jīng)典的小游戲,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • springboot?加載本地jar到maven的實(shí)現(xiàn)方法

    springboot?加載本地jar到maven的實(shí)現(xiàn)方法

    如何在SpringBoot項(xiàng)目中加載本地jar到Maven本地倉(cāng)庫(kù),使用Maven的install-file目標(biāo)來(lái)實(shí)現(xiàn),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Java向List集合中批量添加元素的實(shí)現(xiàn)方法

    Java向List集合中批量添加元素的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java向List集合中批量添加元素的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論