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

JAVA中的注解機(jī)制解讀

 更新時(shí)間:2023年10月02日 09:03:02   作者:這堆干貨有點(diǎn)猛  
這篇文章主要介紹了JAVA中的注解機(jī)制解讀,通過(guò)調(diào)用Java的反射機(jī)制相關(guān)API來(lái)訪問(wèn)annotation信息,首先加載使用注解的類,得到class類,然后再得到類相應(yīng)的方法,成員變量,需要的朋友可以參考下

不知道大家在平時(shí)用到注解的頻率多不多,注解對(duì)我們的幫助很大,能為我們節(jié)省很多工作。最直接的就是可以代替配置文件的功能,無(wú)論是基本的servlet還是常用的三大框架,里面都使用了注解,并且逐漸的代替了原本繁瑣的配置,大大提高了編碼效率。

隨著注解使用的越來(lái)越頻繁,我們對(duì)底層實(shí)現(xiàn)的了解越來(lái)越少,所以在這一章我們來(lái)好好了解一下注解是怎么實(shí)現(xiàn)的。

首先注解是什么?通俗的意思是為程序的元素(類、方法、成員變量)加上更直觀更明了的說(shuō)明(比如 @Override),這些說(shuō)明信息是與程序的業(yè)務(wù)邏輯無(wú)關(guān),并且是供指定的工具或框架使用的。

他的基本原理和流程就是:通過(guò)調(diào)用Java的反射機(jī)制相關(guān)API來(lái)訪問(wèn)annotation信息。首先加載使用注解的類,得到class類。然后再得到類相應(yīng)的方法,成員變量。得到變量后調(diào)用相應(yīng)的類、方法、成員變量的對(duì)象的isAnnotationPresent方法判斷是否使用了注解。之后通過(guò)調(diào)用相應(yīng)的類、方法、成員變量的的getAnnotation方法得到相應(yīng)的注解的對(duì)象。接下來(lái)我們就可以操作注解對(duì)象完成相應(yīng)的邏輯。

我們來(lái)熟悉一下注解的基本結(jié)構(gòu):

最上面的一部分注解叫做元注解,就是注解的注解。@Target 指的是這個(gè)注解可以用在什么地方。他的參數(shù)可以有如下:

接著就是@Retention了,它指的是這個(gè)注解的生命周期。他的參數(shù)可以包括SOURCE、CLAS和 RUNTIME。

SOURCE:如果Retention成員取值為SOURCE,表明該注解只存在源代碼當(dāng)中,在編譯的時(shí)候會(huì)被編譯器丟掉。如重寫(xiě)方法時(shí),方法上面會(huì)有@Override注解,這個(gè)注解就是source類型的。

CLASS:表示注解會(huì)被存到字節(jié)碼文件.class中,但是虛擬機(jī)載入class文件的時(shí)候不會(huì)將注解導(dǎo)入,因此運(yùn)行時(shí)無(wú)法得到。如果不在注解中使用Retention指定,則默認(rèn)的保留策略為CLASS。

RUNTIME:不僅保存到class文件,還會(huì)被虛擬機(jī)載入內(nèi)存,因此在運(yùn)行的時(shí)候可以通過(guò)反射得到并且使用這些注解。我們待會(huì)的例子就是以RUNTIME為例。

而 @Inherited和@Documented表達(dá)的意思比較簡(jiǎn)單:@Inherited 表示子類可以繼承父類的注解(有空會(huì)細(xì)講);@Documented 表示生成doc文檔的時(shí)候會(huì)包含這個(gè)注解。

“public @interface Anno”則是定義注解的關(guān)鍵字以及名字。接下來(lái)就是一些成員變量了,注意:這里是變量,不要以為有個(gè)括號(hào)就是方法了。使用方式是這樣的@Anno(name="wizard",age=12) 。

注意:成員變量只能是基本類型、String、class、enum、Annotation和以上類型的數(shù)組,而且必須是無(wú)參數(shù)、不能拋出異常。

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

相關(guān)文章

  • 新手了解java 泛型基礎(chǔ)知識(shí)

    新手了解java 泛型基礎(chǔ)知識(shí)

    這篇文章主要給大家介紹了關(guān)于Java中泛型使用的簡(jiǎn)單方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 基于Spring AMQP實(shí)現(xiàn)消息隊(duì)列的示例代碼

    基于Spring AMQP實(shí)現(xiàn)消息隊(duì)列的示例代碼

    Spring AMQP作為Spring框架的一部分,是一套用于支持高級(jí)消息隊(duì)列協(xié)議(AMQP)的工具,AMQP是一種強(qiáng)大的消息協(xié)議,旨在支持可靠的消息傳遞,本文給大家介紹了如何基于Spring AMQP實(shí)現(xiàn)消息隊(duì)列,需要的朋友可以參考下
    2024-03-03
  • java異步編程之一文看完其異步函數(shù)表

    java異步編程之一文看完其異步函數(shù)表

    這篇文章主要為大家介紹了java異步編程之一文看完其異步函數(shù)表示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 如何基于JWT實(shí)現(xiàn)接口的授權(quán)訪問(wèn)詳解

    如何基于JWT實(shí)現(xiàn)接口的授權(quán)訪問(wèn)詳解

    授權(quán)是最常見(jiàn)的JWT使用場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何基于JWT實(shí)現(xiàn)接口的授權(quán)訪問(wèn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • JDK源碼分析之String、StringBuilder和StringBuffer

    JDK源碼分析之String、StringBuilder和StringBuffer

    這篇文章主要給大家介紹了關(guān)于JDK源碼分析之String、StringBuilder和StringBuffer的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用jdk具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • SpringBoot整合MybatisSQL過(guò)濾@Intercepts的實(shí)現(xiàn)

    SpringBoot整合MybatisSQL過(guò)濾@Intercepts的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot整合MybatisSQL過(guò)濾@Intercepts的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java通俗易懂系列設(shè)計(jì)模式之適配器模式

    Java通俗易懂系列設(shè)計(jì)模式之適配器模式

    這篇文章主要介紹了Java通俗易懂系列設(shè)計(jì)模式之適配器模式,對(duì)設(shè)計(jì)模式感興趣的同學(xué),一定要看一下
    2021-04-04
  • Hibernate中Session.get()方法和load()方法的詳細(xì)比較

    Hibernate中Session.get()方法和load()方法的詳細(xì)比較

    今天小編就為大家分享一篇關(guān)于Hibernate中Session.get()方法和load()方法的詳細(xì)比較,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 使用Logback日志保存到相對(duì)路徑的操作

    使用Logback日志保存到相對(duì)路徑的操作

    這篇文章主要介紹了使用Logback日志保存到相對(duì)路徑的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 手把手教你設(shè)置IntelliJ IDEA 的彩色代碼主題的圖文教程

    手把手教你設(shè)置IntelliJ IDEA 的彩色代碼主題的圖文教程

    本文給出一系列 IntelliJ IDEA 代碼的彩色主題,感興趣的朋友一起看看吧
    2018-01-01

最新評(píng)論

会宁县| 平潭县| 镇宁| 琼结县| 汝州市| 阿城市| 保康县| 禹城市| 城步| 平潭县| 改则县| 卓资县| 紫金县| 夏邑县| 阳城县| 琼海市| 云浮市| 临漳县| 吉林省| 盐池县| 侯马市| 公安县| 怀远县| 积石山| 定边县| 定西市| 抚顺市| 岑巩县| 安远县| 孟津县| 关岭| 如东县| 恭城| 南宁市| 田林县| 漳平市| 西城区| 潼南县| 安图县| 宜都市| 云梦县|