Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义Java注释不适用于Kotlin项目_Java_Android_Kotlin_Annotations_Kotlin Java Interop - Fatal编程技术网

自定义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

我正在编写一个Android应用程序,并创建了一个Java文件,其中包含我在Kotlin类中使用的注释。我正在使用
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),但出现了相同的错误。