我有val字段的数据类
@Parcelize
data class MemberCard(
val PartnerMembershipId: Int,
override var MembershipNumber: String? = null,
override var Name: String? = null,
var MemberImgUrl: String? = null,
val TextColorHex: String? = null,
override var ExpirationDate: Date? = null,
override var Issuer: String,
var Notifications: kotlin.Int? = null,
override var BarcodeType: kotlin.String? = null,
override var Barcode: kotlin.String? = null,
val IsPartnerCard: Boolean,
val Status : String
) : BaseCard {
val isPending = true//Status=="Pending"
}
由于某些未知原因在运行时我有isPending = false
是一些Kotlin初始化魔术吗?
答案 0 :(得分:0)
我猜你的@Parcelize有问题。引用:
“@ Parcelize要求在主构造函数中声明所有序列化属性.Android Extensions将在每个属性上发出一个警告,并在类体中声明一个支持字段。此外,如果某些属性,则不能应用@Parcelize主构造函数参数不是属性。“
来源:https://kotlinlang.org/docs/tutorials/android-plugin.html
和
“在类体中声明的初始化器的属性也很难正确反序列化:我们必须生成一个根本不执行初始化器(包括初始化块)的替代构造函数,并且只使用序列化数据,但这有java.io.Serializable所有与“魔术”对象创建有关的问题。“
来源: https://github.com/Kotlin/KEEP/blob/master/proposals/extensions/android-parcelable.md部分“简单案例:完全自动Parcelable”
因此,我几乎100%确定您需要做的是纠正Parcelable接口实现。