詳解JDK 5 Annotation 注解之@Target的用法介紹
前言
目前,越來(lái)越多的架構(gòu)設(shè)計(jì)在使用注解,例如spring3.0、struts2等框架。讓我們先來(lái)看看注解的定義。如下是一段使用了JDK 5 Annotation @Target的代碼:
@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface AsynLog { }
一、@Target的用法
java.lang.annotation.Target
用于設(shè)定注解使用范圍
java.lang.annotation.ElementType
Target通過(guò)ElementType來(lái)指定注解可使用范圍的枚舉集合
二、ElementType的用法
取值 | 注解使用范圍 |
METHOD | 可用于方法上 |
TYPE | 可用于類(lèi)或者接口上 |
ANNOTATION_TYPE | 可用于注解類(lèi)型上(被@interface修飾的類(lèi)型) |
CONSTRUCTOR | 可用于構(gòu)造方法上 |
FIELD | 可用于域上 |
LOCAL_VARIABLE | 可用于局部變量上 |
PACKAGE | 用于記錄java文件的package信息 |
PARAMETER | 可用于參數(shù)上 |
這里重點(diǎn)說(shuō)明下:ElementType. PACKAGE。它并不是使用在一般的類(lèi)中,而是用在固定的文件package-info.java中。這里需要強(qiáng)調(diào)命名一定是“package-info”。由于package-info.java并不是一個(gè)合法的類(lèi),使用eclipse創(chuàng)建類(lèi)的方式會(huì)提示不合法,所以需要以創(chuàng)建文件的方式來(lái)創(chuàng)建package-info.java。
例如,定義可使用范圍PACKAGE:
@Target({ElementType.PACKAGE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface AsynLog { }
那么,創(chuàng)建文件:package-info.java,內(nèi)容如下:
@AsynLog
package org.my.commons.logs.annotation;
重點(diǎn)說(shuō)明:注解只能在ElementType設(shè)定的范圍內(nèi)使用,否則將會(huì)編譯報(bào)錯(cuò)。例如:范圍只包含ElementType.METHOD ,則表明該注解只能使用在類(lèi)的方法上,超出使用范圍將編譯異常。
相關(guān)文章
spring5 SAXParseException:cvc-elt.1: 找不到元素“beans 的聲明詳解
這篇文章主要給大家介紹了關(guān)于spring5 SAXParseException:cvc-elt.1: 找不到元素“beans 聲明的相關(guān)資料,需要的朋友可以參考下2020-08-08Spring Boot2配置服務(wù)器訪(fǎng)問(wèn)日志過(guò)程解析
這篇文章主要介紹了Spring Boot2配置服務(wù)器訪(fǎng)問(wèn)日志過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11如何理解Java中基類(lèi)子對(duì)象的構(gòu)建過(guò)程從"基類(lèi)向外"進(jìn)行擴(kuò)散的?
今天小編就為大家分享一篇關(guān)于如何理解Java中基類(lèi)子對(duì)象的構(gòu)建過(guò)程從"基類(lèi)向外"進(jìn)行擴(kuò)散的?,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04Java數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的實(shí)現(xiàn)
相較單鏈表,雙向鏈表除了data與next域,還多了一個(gè)pre域用于表示每個(gè)節(jié)點(diǎn)的前一個(gè)元素。這樣做給雙向鏈表帶來(lái)了很多優(yōu)勢(shì)。本文主要介紹了雙向鏈表的實(shí)現(xiàn),需要的可以參考一下2022-10-10java中將一個(gè)List等分成n個(gè)list的工具方法(推薦)
下面小編就為大家?guī)?lái)一篇java中將一個(gè)List等分成n個(gè)list的工具方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03MybatisPlus使用queryWrapper如何實(shí)現(xiàn)復(fù)雜查詢(xún)
這篇文章主要介紹了MybatisPlus使用queryWrapper如何實(shí)現(xiàn)復(fù)雜查詢(xún),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。2022-01-01Java調(diào)用WebService服務(wù)的三種方式總結(jié)
雖然WebService這個(gè)框架已經(jīng)過(guò)時(shí),但是有些公司還在使用,在調(diào)用他們的服務(wù)的時(shí)候就不得不面對(duì)各種問(wèn)題,本篇文章總結(jié)了最近我調(diào)用?WebService的心路歷程,3種方式可以分別嘗試,需要的朋友可以參考下2023-08-08MybatisPlus實(shí)現(xiàn)邏輯刪除功能
這篇文章主要介紹了MybatisPlus實(shí)現(xiàn)邏輯刪除功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12劍指Offer之Java算法習(xí)題精講N叉樹(shù)的遍歷及數(shù)組與字符串
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03