kotlin注解与java注解中(K)Class兼容问题


#1

我想要定义一个注解,其中包含一个类型属性,如果我声明为KClass类型,在java当中好像就无法使用这个注解,但是如果定义为Class类型,在kotlin当中就无法使用了。理由是注解中只能是一个常量,无论是XXClass::class.java还是从java中获取KClass都不被认为是一个常量表达式。


#2

用 Java 的 Class 就好了,Kotlin 里面可以直接写 XXClass::class,编译器会自动转换


#3

确实定义和使用注解的时候不会有问题,但是kapt处理的时候仍会报错。

错误: 不兼容的类型: NonExistentClass无法转换为Annotation


#4

你这应该是有其他问题吧。Class 作为注解参数应该不是什么问题,你看我这里有例子: TieGuanYin/KotlinActivity.kt at master · enbandari/TieGuanYin (github.com)


京ICP备16022265号-2 Kotlin China 2017 - 2018