AIDL中的parcelize注释:不兼容的类型:无法将对象转换为MyCustomObject

Yur*_*ets 9 android parcelable aidl kotlin kotlin-android-extensions

我正在重写我的模型类Kotlin,必须在以下方面Parcelable使用AIDL:

@Parcelize
data class MyCustomObject(val value1: String, val value2: String) : Parcelable
Run Code Online (Sandbox Code Playgroud)

在编译期间,它崩溃并出现错误:

错误:不兼容的类型:对象无法转换为MyCustomObject

并在生成的代码中指向此行:

if ((0!=_reply.readInt())) {
    _result = com.mypackagename.MyCustomObject.CREATOR.createFromParcel(_reply);
}
Run Code Online (Sandbox Code Playgroud)

我使用这个注释用于其他目的并且没关系,只有在AIDL中我发现到目前为止不匹配.

有什么想法有什么不对吗?

编辑:5天后没有任何评论,我已经为这个问题创建了一张票.

Yur*_*ets 5

这是 Kotlin 中的一个错误,所以我将此问题重定向到 JetBrains。您可以在此处跟踪它:KT-25807

发生这种情况,因为createFromParcel()不返回 class T,而是Object.

UPD

Parcelize 注释现在可由 Google 维护,该问题已在 kotlin 1.5 版中修复。+ https://issuetracker.google.com/issues/110131003