最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

注解的作用

注解可以分為三類:

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

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

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

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

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

注解的定義

元注解

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

@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

定義子類是否可繼承父類定義的注解

@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ù)可以包括:基本類型、String、Class、枚舉類型。
  • 可以使用 default 來聲明參數(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)文章

  • MyBatis使用注解開發(fā)實(shí)現(xiàn)步驟解析

    MyBatis使用注解開發(fā)實(shí)現(xiàn)步驟解析

    這篇文章主要介紹了MyBatis使用注解開發(fā)實(shí)現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java壓縮解壓zip技術(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java壓縮解壓zip技術(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java解壓縮zip - 多個(gè)文件(包括文件夾),對(duì)多個(gè)文件和文件夾進(jìn)行壓縮,對(duì)復(fù)雜的文件目錄進(jìn)行解壓。壓縮方法使用的是可變參數(shù),可以壓縮1到多個(gè)文件
    2017-05-05
  • springboot中如何使用@Async方法

    springboot中如何使用@Async方法

    這篇文章主要介紹了springboot中如何使用@Async方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 解析JavaSe的抽象類和接口

    解析JavaSe的抽象類和接口

    這篇文章主要為大家詳細(xì)介紹了JavaSe的抽象類和接口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • SpringBoot的條件裝配原理及實(shí)現(xiàn)思路

    SpringBoot的條件裝配原理及實(shí)現(xiàn)思路

    SpringBoot的條件裝配是基于@Conditional注解實(shí)現(xiàn)的,下面我們使用原生的@Conditional注解模擬實(shí)現(xiàn)類的條件裝配,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • MyBatis-Plus?updateById更新不了空字符串或null的解決方法

    MyBatis-Plus?updateById更新不了空字符串或null的解決方法

    本文主要介紹了MyBatis-Plus?updateById更新不了空字符串或null的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Mybatis配置文件之動(dòng)態(tài)SQL配置備忘錄

    Mybatis配置文件之動(dòng)態(tài)SQL配置備忘錄

    這篇文章主要介紹了Mybatis配置文件之動(dòng)態(tài)SQL配置備忘錄的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java實(shí)現(xiàn)文件名倒序排序的技術(shù)指南

    Java實(shí)現(xiàn)文件名倒序排序的技術(shù)指南

    在實(shí)際開發(fā)過程中,我們經(jīng)常需要對(duì)文件進(jìn)行操作和處理,一個(gè)常見的需求是按文件名倒序排列文件列表,以便于文件的管理和查找,本文將介紹如何在Java中實(shí)現(xiàn)文件名倒序排序,并提供詳細(xì)的代碼案例,需要的朋友可以參考下
    2024-08-08
  • IDEA項(xiàng)目maven?project沒有出現(xiàn)plugins和Dependencies問題

    IDEA項(xiàng)目maven?project沒有出現(xiàn)plugins和Dependencies問題

    這篇文章主要介紹了IDEA項(xiàng)目maven?project沒有出現(xiàn)plugins和Dependencies問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java常用鎖synchronized和ReentrantLock的區(qū)別

    Java常用鎖synchronized和ReentrantLock的區(qū)別

    這篇文章主要介紹了Java常用鎖synchronized和ReentrantLock的區(qū)別,二者的功效都是相同的,但又有很多不同點(diǎn),下面我們就進(jìn)入文章了解具體的相關(guān)內(nèi)容吧。需要的小伙伴也可以參考一下
    2022-05-05

最新評(píng)論

淳安县| 汉寿县| 南平市| 调兵山市| 侯马市| 昆山市| 建宁县| 达孜县| 南木林县| 礼泉县| 兴安县| 崇义县| 海盐县| 江城| 南开区| 论坛| 探索| 昌邑市| 沽源县| 来宾市| 汾西县| 泗水县| 惠水县| SHOW| 微博| 紫云| 潜江市| 柞水县| 海安县| 临西县| 图木舒克市| 灌阳县| 万载县| 横峰县| 澎湖县| 怀安县| 长白| 安顺市| 林芝县| 临沭县| 万荣县|