如何在注释Kotlin中使用类

时间:2018-03-27 21:54:28

标签: annotations kotlin

我想创建一个接收Class参数的注释,JAVA中的示例应该是

@Retention(RUNTIME)
public @interface CustomAnnotation {

    Class<Comparable<?>> comparator();
}

我想在Kotlin应该是:

@Retention(AnnotationRetention.RUNTIME)
annotation class CustomAnnotation(

    val comparator: Class<Comparable<*>>
)

但是在Kotlin中得到一条错误消息Invalid type of annotation member那么在Kotlin中应该如何接受一个类作为参数呢?

1 个答案:

答案 0 :(得分:2)

请参阅annotations上的语言参考:

  

如果需要指定一个类作为注释的参数,请使用Kotlin类(KClass)。

因此,使用Kotlin等效项代替Java Class<Comparable<*>>KClass<Comparable<*>>

@Retention(AnnotationRetention.RUNTIME)
annotation class CustomAnnotation(
    val comparator: KClass<Comparable<*>>
)