詳解JDK 5 Annotation 注解之@Target的用法介紹
前言
目前,越來越多的架構(gòu)設(shè)計在使用注解,例如spring3.0、struts2等框架。讓我們先來看看注解的定義。如下是一段使用了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通過ElementType來指定注解可使用范圍的枚舉集合
二、ElementType的用法
| 取值 | 注解使用范圍 |
| METHOD | 可用于方法上 |
| TYPE | 可用于類或者接口上 |
| ANNOTATION_TYPE | 可用于注解類型上(被@interface修飾的類型) |
| CONSTRUCTOR | 可用于構(gòu)造方法上 |
| FIELD | 可用于域上 |
| LOCAL_VARIABLE | 可用于局部變量上 |
| PACKAGE | 用于記錄java文件的package信息 |
| PARAMETER | 可用于參數(shù)上 |
這里重點說明下:ElementType. PACKAGE。它并不是使用在一般的類中,而是用在固定的文件package-info.java中。這里需要強(qiáng)調(diào)命名一定是“package-info”。由于package-info.java并不是一個合法的類,使用eclipse創(chuàng)建類的方式會提示不合法,所以需要以創(chuàng)建文件的方式來創(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;

重點說明:注解只能在ElementType設(shè)定的范圍內(nèi)使用,否則將會編譯報錯。例如:范圍只包含ElementType.METHOD ,則表明該注解只能使用在類的方法上,超出使用范圍將編譯異常。
相關(guān)文章
SpringBoot實現(xiàn)短鏈接系統(tǒng)的使用示例
由于短鏈接可能涉及到用戶隱私和安全問題,所以短鏈接系統(tǒng)也需要符合相關(guān)的數(shù)據(jù)保護(hù)和安全標(biāo)準(zhǔn),本文主要介紹了SpringBoot實現(xiàn)短鏈接系統(tǒng)的使用示例,感興趣的可以了解一下2023-09-09
解決Mybatis-Plus更新方法不更新NULL字段的問題
這篇文章主要介紹了解決Mybatis-Plus更新方法不更新NULL字段的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
IDEA報錯:Unable to save settings Failed to save settings
這篇文章主要介紹了IDEA報錯:Unable to save settings Failed to save settings的相關(guān)知識,本文給大家分享問題原因及解決方案,需要的朋友可以參考下2020-09-09

