注解
定义注解
kotlin中定义注解使用关键字:annotation class
kotlin中不允许为注解定义注解体,即注解后没有“{}”
如:
annotation class KotlinTag
注解可以使用的程序单元:
- 类或者接口
- 方法或者函数
- 属性
- 构造函数(主构造函数使用注解时必须不能省略Constructor)
注解属性
注解中可以带属性,但由于注解没有注解体,属性只能在注解声明部分指定,可以看做在注解的主函数中指定注解属性
***注解属性只能是val(只读属性)***,只能在使用注解时指定,一旦指定后就不能改变其值;
如:
annotation class MyTag(val name:String){
}
处这种形式为,kotlin允许为属性指定初始值,在使用时如果不指顶属性值,就是用默认属性值,如果在使用时指定了属性值,默认值不会其作用;
annotation class MyTag(val name:String="leslie"){
}
Kotlin中注解属性类型:
-
不能为可空类型比如:Int?(因为JVM不允许使用null作为属性值)
-
对应java的基本数据类型
-
String
-
Class对象(包括kotlin的KClass和Java的Class)
-
上述类型数组(基本数据类型的数组需要指定为XXXArray如:IntArray而不是Array<Int>)
-
其他注解(将其他注解作为该注解的属性时,不需要以@为前缀)
-
如果属性名为“value”,在为value属性指定属性值时可以省略属性名