前言
有些定义总是需要注解去实现的。
本文需要带着几个问题
① 怎么定义Kotlin的注解
② 注解类的属性有几种,什么用途
③ 可以在哪些地方用注解
④ 与java注解怎么交互
⑤ 文中小思:为什么kotlin与java交互,要用到KClass,然后转换成java的class
注解声明
简介
要定义一个注解类,需要将 annotation 修饰符放在类的前面
annotation class Fancy
附加属性
可以通过用元注解标注注解类来指定
属性类型
- @Target
指定可以用该注解标注的元素的可能的类型(类、函数、属性、表达式等); - @Retention
指定该注解是否存储在编译后的 class 文件中,以及它在运行时能否通过反射可见 (默认都是 true); - @Repeatable
允许在单个元素上多次使用相同的该注解; - @MustBeDocumented
指定该注解是公有 API 的一部分,并且应该包含在生成的 API 文档中显示的类或方法的签名中。
范例
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION,
AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
@MustBeDocumented
annotation class Fancy
用法
先看个范例
@Fancy class Foo {
@Fancy fun baz(@Fancy foo: Int): Int {
return (@Fancy 1)
}
}