示例:
@Fancy("hello")
class A {
var a = 1
}
annotation class Fancy(val name: String) //可以对注解进行初始化
注解的附加属性可以通过用元注解标注注解类来指定:
@Target 指定可以用该注解标注的元素的可能的类型(类、函数、属性与表达式);@Retention 指定该注解是否存储在编译后的 class 文件中,以及它在运行时能否通过反射可见 (默认都是 true);@Repeatable 允许在单个元素上多次使用相同的该注解;@MustBeDocumented 指定该注解是公有 API 的一部分,并且应该包含在生成的 API 文档中显示的类或方法的签名中。@Fancy()
class A {}
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION,
AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.VALUE_PARAMETER,
AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
@MustBeDocumented
annotation class Fancy()
上述部分内容来自官方文档解释。