在Kotlin中,属性(Propertly)无法被序列化为一个Parcel。

20

我希望我的变量(不是来自于我的构造函数)能够成为我的Parcelable的一部分。但是,我面临这个警告信息“Propertly would not be serialize into a Parcel”,它告诉我目前无法这样做。

我正在使用实验性的Kotlin v.1.2.41。

我该怎么做?

@Parcelize
data class MyClass(private val myList: List<Stuff>) : Parcelable {

    val average: List<DayStat> by lazy {
        calculateAverage(myList)
    }
1个回答

23

你想将它作为Parcelable的一部分(只需标记@Transient),还是将其写入包裹中?

在第二种情况下,设计文档解释了为什么这是一个问题(搜索“在类体中声明初始化程序的属性”),而懒惰只会使含义更不清晰。

如果你可以放弃懒惰,你可以这样做:

@Parcelize
data class MyClass (private val myList: List<Stuff>, val average: List<DayStat> = calculateAverage(myList)) : Parcelable {
    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接