在Kotlin中,不会将其序列化为包裹

时间:2018-05-18 15:40:28

标签: kotlin parcelable kotlin-android-extensions

我希望我的构造函数中的变量不是,我的Parcelable的一部分。 但是,我面对这个警告“有些不会序列化成包裹”,这告诉我目前我不能这样做。

我在 experimental v.1.2.41中使用Kotlin。

我该怎么办?

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

    val average: List<DayStat> by lazy {
        calculateAverage(myList)
    }

1 个答案:

答案 0 :(得分:6)

你想让它成为Parcelable的一部分(只标记@Transient)或将其写入包裹吗?

在第二种情况下,the design document解释了为什么这是一个问题(搜索“在类体中声明了初始化器的属性”),懒惰只会使含义不太明确。

如果你没有懒惰,你可以这样做:

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