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

Java中使用注解的實例詳解

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

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

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

注解的作用

注解可以分為三類:

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

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

這類注解不會被編譯進(jìn)入.class文件,它們在編譯后就被編譯器扔掉了。

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

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

注解的定義

元注解

有一些注解可以修飾其他注解,這些注解就稱為元注解(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
  • 運行期: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 "";
}
  • 定義一個注解時,還可以定義配置參數(shù)。配置參數(shù)可以包括:基本類型、String、Class、枚舉類型。
  • 可以使用 default 來聲明參數(shù)的默認(rèn)值
  • 最常用的參數(shù)定義為value(),推薦所有參數(shù)都盡量設(shè)置默認(rèn)值
  • 必須設(shè)置@Target@Retention,@Retention一般設(shè)置為RUNTIME,便于運行期讀取該注解

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

相關(guān)文章

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

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

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

    Java壓縮解壓zip技術(shù)_動力節(jié)點Java學(xué)院整理

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

    springboot中如何使用@Async方法

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

    解析JavaSe的抽象類和接口

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

台东市| 师宗县| 汶上县| 天津市| 胶南市| 寿宁县| 乌兰察布市| 石门县| 莫力| 二连浩特市| 关岭| 安岳县| 南宁市| 兴隆县| 安乡县| 上犹县| 久治县| 莱阳市| 江永县| 罗甸县| 三台县| 云和县| 湟源县| 贺州市| 中卫市| 婺源县| 奉新县| 沂水县| 澳门| 宁夏| 丘北县| 宣城市| 沐川县| 莱州市| 胶州市| 丘北县| 新平| 黄石市| 广宗县| 勃利县| 中阳县|