本文主要学习 Kotlin
注解的相关内容。
源注解
@Target : 指定这个注解可被用于哪些元素(类, 函数, 属性, 表达式…)
1 |
@Retention : 注解信息在 class 文件中的保存和访问限制
1 |
@Repeatable : 允许在一个元素上多次使用同一注解
@MustBeDocumented : 表示这个注解是公开 API
的一部分,在自动产生的 API
文档的类或者函数签名中,应该包含这个注解的信息。
注解和使用
注解的声明使用 annotation
关键字,类似一个类的声明,在上面添加源注解对定义的注解进行描述。
1 |
|
使用注解,注解可以添加在很多地方,取决于声明 @Target
中支持的类型
1 | // 类注解 |
注解参数
注解可以添加参数,参数支持 基本数据类型,字符串,KClass,枚举,其他注解,由以上数据类型构成的数组。
1 |
|
注解同样可以作为注解的参数,如果一个注解被用作另一个注解的参数, 那么在它的名字之前不使用 @
前缀
1 | annotation class AnnoWithAnotherAnno(val msg: String, |
使用注解
1 | class AnnoTestB |
注解的使用目标
当你对一个属性或一个主构造器的参数添加注解时,从一个 Kotlin
元素会产生出多个 Java
元素,因此在编译产生的 Java
字节码中,你的注解存在多个可能的适用目标。
支持的注解目标
1 | file |
为了明确指定注解应该使用在哪个元素上,可以使用以下语法:
1 | class AnnoTestC( |
当对同一注解目标使用多个注解时,可以使用 @set[anno1 anno2]
的语法
1 | class AnnoTestD( |
对扩展函数使用注解
1 | fun @receiver:Fancy String.myExtension() { } |