自定义Java注释不适用于Kotlin项目
我正在编写一个Android应用程序,并创建了一个Java文件,其中包含我在Kotlin类中使用的注释。我正在使用自定义Java注释不适用于Kotlin项目,java,android,kotlin,annotations,kotlin-java-interop,Java,Android,Kotlin,Annotations,Kotlin Java Interop,我正在编写一个Android应用程序,并创建了一个Java文件,其中包含我在Kotlin类中使用的注释。我正在使用kapt注释处理器 编译器中似乎没有显示任何错误,但当我运行应用程序时,我得到一个错误: 不兼容的类型:不存在的类无法转换为注释-@error.NonExistentClass() 这只是一个kapt限制吗?我读了一些关于Kotlin是如何去掉函数的(但我认为它保留了声明站点)。所以这可能意味着它不知道该做什么,因为函数声明中的参数是用注释标记的 见: 有没有办法解决这个问题 Jav
kapt
注释处理器
编译器中似乎没有显示任何错误,但当我运行应用程序时,我得到一个错误:
不兼容的类型:不存在的类无法转换为注释-@error.NonExistentClass()
这只是一个kapt
限制吗?我读了一些关于Kotlin是如何去掉函数的(但我认为它保留了声明站点)。所以这可能意味着它不知道该做什么,因为函数声明中的参数是用注释标记的
见:
有没有办法解决这个问题
Java注释文件:
@IntDef(value = {Typeface.NORMAL, Typeface.BOLD, Typeface.ITALIC, Typeface.BOLD_ITALIC})
@Retention(RetentionPolicy.SOURCE)
public @interface MyTypefaceAnnotation { }
Kotlin使用文件:
sealed class MySealedClass(
@StringRes val text: Int,
@MyTypefaceAnnotation val typeface: Int,
@ColorRes val fontColor: Int,
val isEnrollmentButtonEnabled: Boolean
) {
object NotSelected :
MySealedClass (
R.string.please_select,
Typeface.NORMAL,
R.color.light_grey,
false
)
// etc
Java注释文件真的是一个.Java文件吗?看起来像Kotlin,所以可能需要将扩展名更改为“.kt”?也许你还需要“@Target(ElementType.FIELD)”或类似的注释类。它是Java,是的。你觉得科特林怎么样?请注意公共
和@接口
,而不是注释类
。尝试了不同的@Target()类型,包括ElementType.FIELD),但出现了相同的错误。