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

JAVA中的注解機制解讀

 更新時間:2023年10月02日 09:03:02   作者:這堆干貨有點猛  
這篇文章主要介紹了JAVA中的注解機制解讀,通過調用Java的反射機制相關API來訪問annotation信息,首先加載使用注解的類,得到class類,然后再得到類相應的方法,成員變量,需要的朋友可以參考下

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

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

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

他的基本原理和流程就是:通過調用Java的反射機制相關API來訪問annotation信息。首先加載使用注解的類,得到class類。然后再得到類相應的方法,成員變量。得到變量后調用相應的類、方法、成員變量的對象的isAnnotationPresent方法判斷是否使用了注解。之后通過調用相應的類、方法、成員變量的的getAnnotation方法得到相應的注解的對象。接下來我們就可以操作注解對象完成相應的邏輯。

我們來熟悉一下注解的基本結構:

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

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

SOURCE:如果Retention成員取值為SOURCE,表明該注解只存在源代碼當中,在編譯的時候會被編譯器丟掉。如重寫方法時,方法上面會有@Override注解,這個注解就是source類型的。

CLASS:表示注解會被存到字節(jié)碼文件.class中,但是虛擬機載入class文件的時候不會將注解導入,因此運行時無法得到。如果不在注解中使用Retention指定,則默認的保留策略為CLASS。

RUNTIME:不僅保存到class文件,還會被虛擬機載入內存,因此在運行的時候可以通過反射得到并且使用這些注解。我們待會的例子就是以RUNTIME為例。

而 @Inherited和@Documented表達的意思比較簡單:@Inherited 表示子類可以繼承父類的注解(有空會細講);@Documented 表示生成doc文檔的時候會包含這個注解。

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

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

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

相關文章

  • 新手了解java 泛型基礎知識

    新手了解java 泛型基礎知識

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

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

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

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

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

    如何基于JWT實現(xiàn)接口的授權訪問詳解

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

    JDK源碼分析之String、StringBuilder和StringBuffer

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

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

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

    Java通俗易懂系列設計模式之適配器模式

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

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

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

    使用Logback日志保存到相對路徑的操作

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

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

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

最新評論

偃师市| 察隅县| 高唐县| 西乌珠穆沁旗| 随州市| 洪雅县| 阳山县| 张家港市| 长泰县| 余干县| 蒲江县| 天祝| 呼玛县| 芦山县| 黑山县| 会东县| 鄯善县| 广平县| 灌南县| 兰考县| 商丘市| 南木林县| 平凉市| 奇台县| 封开县| 资阳市| 宁河县| 宁蒗| 长武县| 雷州市| 兰州市| 浦县| 鸡东县| 策勒县| 汉川市| 随州市| 白城市| 改则县| 揭东县| 陇西县| 鸡东县|