当前位置:嗨网首页>书籍在线阅读

12-注解类的构造函数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

10.2.3 注解类的构造函数

和Java一样,Kotlin的注解也接受带参数的构造函数。代码如下。

annotation class User(val name: String)
@User("name") class Foo {}

对于注解类的构造函数而言,并不是所有的数据类型都可以在构造函数中使用,允许的参数类型有以下几种。

  • 与Java基本类型对应的数据类型(如Int、Long等)。
  • 字符串(String)。
  • KClass。
  • 枚举类。
  • 其他注解类。

在使用注解的构造函数时,注解参数不允许有可空类型,因为JVM暂不支持将null作为注解属性的值进行存储。下面是一些注解类构造函数参数类型使用的例子。

//构造器参数类型为String和Int
annotation class User(val name: String,val age:Int)
//参数类型是枚举
enum class MyEnum{
    ONE,TWO,THREE
}
//构造器参数类型为KClass,在使用时编译器会将其转换为对应的Java类型
annotation class Person(val a: KClass<String>,val b:KClass<out Any>)
@Person(String::class,Int::class) class Demo

当然,如果在构造函数中使用不支持的数据类型,则编译时就会报错。为注解类的构造函数添加参数时,应注意以下两点。

  • 参数类型只能使用val定义,而且必须是系统支持的数据类型。
  • 当参数类型是另一个注解类时,注解类名前不能使用@字符作为前缀。