0

我正在编写一个 Android 应用程序并创建了一个 Java 文件,其中包含我在 Kotlin 类中使用的注释。我正在使用kapt注释处理器。

编译器中的一切似乎都没有显示错误,但是当我运行应用程序时,出现错误: incompatible types: NonExistentClass cannot be converted to Annotation-@error.NonExistentClass()

这只是一个kapt限制吗?我读了一些关于 Kotlin 如何存根函数的内容(但我认为保留了声明站点)。那么这可能意味着它不知道该怎么做,因为函数声明中的参数标有注释?

请参阅:kapt 用 error.NonExistentClass 替换生成的类引用,尽管启用了 kapt.correctErrorTypes 任何想法如何解决这个问题?

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

4

0 回答 0