我正在编写一个 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