我使用 Jetbrains插件在 Kotlin 中生成 Android Parcelable 类,并得到了这两个异常(不是警告,不像这里,所以项目没有构建):
CREATOR_DEFINITION_IS_NOT_ALLOWED:不允许“CREATOR”定义。请改用“Parceler”伴随对象。
OVERRIDING_WRITE_TO_PARCEL_IS_NOT_ALLOWED:不允许覆盖“writeToParcel”。请改用“Parceler”伴随对象。
我已经查看了类似的问题,但没有为我的案例找到任何解决方案。
我的 Kotlin 版本:1.1.51(根据 Gradle),但在 1.1.4 中添加了此功能:https ://blog.jetbrains.com/kotlin/2017/08/kotlin-1-1-4-is-out /
自动生成的代码:
@Parcelize
data class User(
val id: Int,
val cardId: String,
val coefficent: Float = 1.0F,
val name: String,
val surname: String = ""
) : Parcelable {
constructor(source: Parcel) : this(
source.readInt(),
source.readString(),
source.readFloat(),
source.readString(),
source.readString()
)
companion object {
@JvmField
val CREATOR: Parcelable.Creator<User> = object : Parcelable.Creator<User> {
override fun createFromParcel(source: Parcel): User = User(source)
override fun newArray(size: Int): Array<User?> = arrayOfNulls(size)
}
}
override fun describeContents() = 0
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
writeInt(id)
writeString(cardId)
writeFloat(coefficent)
writeString(name)
writeString(surname)
}
}