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

Java四種元注解介紹

 更新時間:2024年08月28日 09:15:17   作者:交給時間  
元注解是用來修飾注解的注解,在java.lang.annotation包下,當(dāng)我們需要自己定義一個注解去做某些事情的時候,我們要對該注解進(jìn)行一些限制,確保我們注解的作用域,這篇文章主要介紹了Java四種元注解介紹,需要的朋友可以參考下

Java四種元注解相關(guān)介紹

概述

注解從Java1.5引入以來,不斷地簡化我們編寫代碼的流程,逐漸的也成為了我們必學(xué)的一項技術(shù)。我們學(xué)習(xí)了各種注解,學(xué)習(xí)了他們的用法,學(xué)習(xí)了他們的限制,是否想過他們的組成呢,下面我將我對元注解的理解分享給大家。

元注解是用來修飾注解的注解,在java.lang.annotation包下,當(dāng)我們需要自己定義一個注解去做某些事情的時候,我們要對該注解進(jìn)行一些限制,確保我們注解的作用域,有的注解有屬性,有的注解沒有屬性,我們點進(jìn)去就能看到。這樣的注解一共有四個,如下圖

定義一個注解用@interface來修飾文件類型,這四個元注解我們一個一個分析

@Documented

該注解是用來聲明,我們的注解是否能被JavadocAPI文檔生成工具展示出來,如果某個注解上面聲明了@Documented,就說明這個注解可以被那些生成文檔的工具展示出來。

我們點進(jìn)去可以看到,該注解用到了三個注解,其中有他自己,還有兩個元注解,并且這個注解沒有屬性,所以我們的使用方法很簡單,就是寫或者不寫該注解。

@Retention

我們點進(jìn)這個注解可以看到,首先他寫了@Documented,說明他是可以被文檔生成工具顯示到文檔中,并且他有一條屬性,他同樣也對自己使用了@Retention,并且給了一個值->RetentionPolicy.RUNTIME,可以看到跟我們上邊的@Documented注解是一樣的,然后我們點到RetentionPolicy這個類中去看看這個位置都可以給什么值

首先我們注意到了,這個類是個枚舉類,也就是說我們還可以這樣寫

那么這三個常量都代表什么意思呢

SOURCE:我們翻譯一下注釋:編譯器將丟棄注解就是說如果用了他,那么你的注解編譯成.class文件之后就會被丟掉,所以如果我們的注解是用來輔助編譯過程的,那么我們可以用它。

例如@SuppressWarnings,我們通常用該注解來告訴編譯器忽略某些警告信息,編譯之后我們就不需要了,所以這個場景用SOURCE肯定是沒毛病的

CLASS:我們翻譯一下注釋:編譯器將注解記錄在類文件中,VM在運行時不需要保留這些注釋。這是默認(rèn)設(shè)置行為。也就是說,編譯器編譯成.class文件后,這個注解仍然存在,但是在我們的jvm去加載.class文件的時候會被丟掉,這個使用的不多所以我們知道這個是什么意思就行。如果不寫,默認(rèn)就是選擇CLASS

RUNTIME:使用率最高的一個常量,隨便去某個類庫里去查一下注解,點進(jìn)去基本都是RUNTIME。老樣子,我們先翻譯注釋:注釋將由編譯器記錄在類文件中,并在運行時由VM定義,因此可以反射性地讀取。也就是說這個常量所定義的范圍是最大的了,都可以被反射了,也就是不光編譯器編譯了、JVM加載了還能反射性的讀取到,會一直存在。我們自己在定義注解的時候,除非有特殊需要,一般業(yè)務(wù)也是用這個常量,比較方便一些。@Target

由圖可以看到,這個元注解用到了三個元注解,有我們上邊說的兩個和他自己。此處我們不過多贅述。再看他的屬性,可以看到用到了中括號,說明注解的參數(shù)這里是可以放一個枚舉數(shù)組的,我們點開枚舉后可以看到聲明了很多常量。

老樣子先翻譯一下注釋,基本都能看出來是啥意思了,TYPE_PARAMETERTYPE_USEJDK1.8加進(jìn)來的

TYPE:類、接口(包括注解類型)或枚舉聲明。

  • TYPE:類、接口(包括注解類型)或枚舉聲明。
  • FIELD:字段聲明(包括枚舉常量)
  • METHOD:方法聲明
  • PARAMETER:形式參數(shù)聲明
  • CONSTRUCTOR:構(gòu)造函數(shù)聲明
  • LOCAL_VARIABLE:局部變量聲明
  • ANNOTATION_TYPE:注釋類型聲明
  • PACKAGE:包聲明
  • TYPE_PARAMETER:類型參數(shù)聲明。該常量可以用于各種參數(shù)類型(包括類)的前面
  • TYPE_USE:類型的使用。該常量可以用來標(biāo)注任何類型的名稱,包括TYPE_PARAMETER

所以我們可以根據(jù)我們的需要選擇此處的常量,當(dāng)然可以多選

例如這樣,按照圖片的寫法,這個@annotationT就既可以聲明在字段上,又可以聲明在方法上。

@Inherited

如圖可見,這個注解是一個可以被文檔生成工具顯示,不會被編譯器、JVM丟棄,且用到了ANNOTATION_TYPE,也就是說這個注解只能定義到注解上,所以他一定是用來規(guī)定注解的某些特性的。

老樣子我們翻譯一下上邊的注釋,由于篇幅較長此處不展示具體內(nèi)容,大佬們可以點進(jìn)去看看,大概是:被這個注解注釋的注解可以自動繼承的,查詢類上的注解類型,如果類聲明沒有針對該類型的注解將自動查詢超類(直到Object)

PS:請注意,如果注解類型用于注解類以外的任何內(nèi)容,則此元注解類型無效。還要注意,此元注解只會導(dǎo)致注解從超類繼承;已實現(xiàn)接口上的注解沒有影響。

簡單說,如果想讓你定義的注解被繼承,那就把@Inherited掛在你的注解上

總結(jié)

以上就是作用于我們所有注解上的元注解的基本信息,我們明白每個元注解代表什么意思會方便我們?nèi)ダ斫庖恍?code>JDK自帶的、或者第三方類庫中定義或使用的注解,也會方便我們自己去定義一些注解,比如可以用注解的方式實現(xiàn)在操作我們自定義的注解注釋的方法執(zhí)行之前或者之后要做些什么,當(dāng)我們真正會使用這些元注解去自定義屬于自己的注解的時候,一定會理解為什么注解使用的如此普遍。

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

相關(guān)文章

  • SpringBoot中ApplicationEvent和ApplicationListener用法小結(jié)

    SpringBoot中ApplicationEvent和ApplicationListener用法小結(jié)

    這篇文章介紹SpringBoot中ApplicationEvent用法,注意ApplicationEvent和MQ隊列雖然實現(xiàn)的功能相似,但是MQ還是有其不可替代性的,最本質(zhì)的區(qū)別就是MQ可以用于不同系統(tǒng)之間的消息發(fā)布,而SpringEvent這種模式只能在一個系統(tǒng)中,需要的朋友可以參考下
    2023-03-03
  • @RunWith注解的使用及說明

    @RunWith注解的使用及說明

    @RunWith注解用于指定測試運行器,SpringRunner(需JUnit4.12+)和SpringJUnit4ClassRunner(舊版)可集成Spring環(huán)境,@ContextConfiguration配合加載配置并自動注入Bean,簡化測試配置
    2025-09-09
  • SpringCloud FeignClient中Bean重復(fù)注冊沖突解決方案

    SpringCloud FeignClient中Bean重復(fù)注冊沖突解決方案

    本文詳細(xì)解析了SpringCloud開發(fā)中FeignClientBean重復(fù)定義問題,從微服務(wù)啟動的基礎(chǔ)配置講起,分析了報錯根源,并對比了兩種主流解決方案的優(yōu)劣,同時覆蓋了有狀態(tài)/無狀態(tài)Bean的核心知識點,需要的朋友可以參考下
    2026-03-03
  • 淺談用SpringBoot實現(xiàn)策略模式

    淺談用SpringBoot實現(xiàn)策略模式

    本文主要介紹了SpringBoot實現(xiàn)策略模式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Java數(shù)據(jù)結(jié)構(gòu)之插入排序與希爾排序

    Java數(shù)據(jù)結(jié)構(gòu)之插入排序與希爾排序

    在本篇文章,我們將為小伙伴們進(jìn)行排序概念的基本講解并具體講解其中的兩種基礎(chǔ)排序:插入排序和希爾排序,希望小伙伴們能夠從中有所收獲
    2023-04-04
  • springboot工程如何使用阿里云OSS傳輸文件

    springboot工程如何使用阿里云OSS傳輸文件

    阿里云對象存儲OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存儲服務(wù),多種存儲類型供選擇,全面優(yōu)化存儲成本,非常適合存儲非結(jié)構(gòu)化數(shù)據(jù),本文給大家介紹springboot工程使用阿里云OSS傳輸文件的操作,感興趣的朋友一起看看吧
    2023-08-08
  • Java實現(xiàn)多層文件夾壓縮功能

    Java實現(xiàn)多層文件夾壓縮功能

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言進(jìn)行多層文件夾壓縮功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • java Arrays.asList 返回什么與普通 ArrayList 區(qū)別介紹

    java Arrays.asList 返回什么與普通 ArrayList 區(qū)別介

    Arrays.asList()返回一個固定大小的List視圖,而不是java.util.ArrayList,它不支持add和remove操作,但支持set操作,本文介紹java Arrays.asList返回什么與普通 ArrayList區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • java中實體類轉(zhuǎn)Json的2種方法

    java中實體類轉(zhuǎn)Json的2種方法

    本篇文章中主要介紹了java中實體類轉(zhuǎn)Json的2種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。
    2017-01-01
  • maven的安裝配置以及在IDEA中的配置圖文教程

    maven的安裝配置以及在IDEA中的配置圖文教程

    下面小編就為大家分享一篇maven的安裝配置以及在IDEA中的配置圖文教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評論

吉木萨尔县| 宝清县| 东港市| 新巴尔虎左旗| 四子王旗| 昆山市| 沾化县| 湘西| 兰坪| 恩施市| 兰州市| 敦煌市| 许昌县| 于都县| 霸州市| 平凉市| 延寿县| 宣城市| 竹山县| 榕江县| 德安县| 景泰县| 滕州市| 融水| 宁晋县| 资兴市| 梅河口市| 凌源市| 宽甸| 宜君县| 南雄市| 安丘市| 洛川县| 丹凤县| 南陵县| 益阳市| 乡城县| 门源| 怀宁县| 蓝山县| 历史|