- @Target
- @Retention
- @Repeatable
- @MustBeDocumented
??Kotlin 中的注解本質(zhì)上是一種接口類型沮峡。Kotlin 標準庫中提供一些基本注解和元注解∧穑基本注解會影響編譯器的行為匠襟,如@JvmName
钝侠、@JvmField
、JvmStatic
酸舍、@JvmOverloads
和 @Throws
等帅韧,這些基本注解主要用于 Kotlin 與 Java 的混合編程中。元注解是負責注解其他的注解父腕,自定義注解會用到元注解弱匪。
??Kotlin 元注解有 4 個,其中包括 Target
璧亮、Retention
萧诫、Repeatable
和 MustBeDocumented
,它們都位于 kotlin.annotation
包中枝嘶。元注解是為其他注解進行說明的注解帘饶,當自定義一個新的注解類型時,其中可以使用元注解群扶。
@Target
??@Target
使用于目標注解及刻,它用來指定一個新注解的使用目標。@Target
注解有一個 allowedTargets
屬性竞阐,該屬性用來設(shè)置使用目標缴饭,allowedTargets
是 kotlin.annotation.AnnotationTarget
枚舉類型的數(shù)組,AnnotationTarget
描述 Kotlin 代碼中可以被注解的元素類型骆莹,它有 15 個枚舉常量颗搂。如下:
常量 | 使用目標 |
---|---|
CLASS | 類、接口幕垦、對象聲明和注解類聲明 |
ANNOTATION_CLASS | 其他注解類型聲明 |
TYPE_PARAMERTER | 用于泛型中類型參數(shù)聲明 |
PROPERTY | 屬性聲明 |
FIELD | 字段聲明丢氢,包括屬性的支持字段 |
LOCAL_VARIABLE | 局部變量聲明 |
VALUE_PARAMETER | 用于函數(shù)或構(gòu)造函數(shù)參數(shù)值聲明 |
CONSTRUCTOR | 用于構(gòu)造函數(shù)聲明 |
FUNCTION | 用于函數(shù)聲明,不包括構(gòu)造函數(shù) |
PROPERTY_GETTER | 只用于屬性的getter訪問器聲明 |
PROPERTY_SETTER | 只用于屬性的setter訪問器聲明 |
TYPE | 類型使用 |
EXPRESSION | 任何表達式 |
FILE | 文件 |
TYPEALIAS | 類型別名 |
@Retention
??@Retention
使用于保留期注解先改,它用來指定一個新注解的有效范圍疚察,@Retention
注解有一個 value
屬性,該屬性用來設(shè)置保留期仇奶,value
是 kotlin.annotation.AnnotationRetention
枚舉類型貌嫡,AnnotationRetention
描述注解保留期種類,它有 3 個常量,如下:
常量 | 保留期 |
---|---|
SOURCE | 只適用于源代碼文件中衅枫,此范圍最小 |
BINARY | 編譯器把注解信息記錄在編譯之后的二進制文件中嫁艇,對于反射是不可見的,此范圍居中 |
RUNTIME | 編譯器把注解信息記錄在編譯之后的二進制文件中弦撩,對于反射是可見的步咪,此范圍最大,這是默認保留期 |
@Repeatable
??@Repeatable
適用于可重復注解益楼,它允許在相同的程序元素中重復注解猾漫,可重復的注解必須使用 @Repeatable
進行注解。
@MustBeDucomented
??@MustBeDucomented
適用于文檔注解感凤,該注解可以修飾代碼元素(類悯周、接口、函數(shù) 和 屬性等)陪竿,文檔生成工具可以提取這些注解信息禽翼。