如何将setter和getter添加到Parcelable类的成员变量中



下面是我目前正在研究的一个类

@Parcelize
class Time(var hour:Int, var minute:Int):Comparable<Time>,Parcelable

我想为成员变量hour和minute添加一个setter,以便它们保持时间格式。该类必须通过intent传递,因此它实现了Parcelable。但它说Parcelable类应该有一个主构造函数,所以我在添加setter时遇到了问题。有人能告诉我原因和解决方案吗?非常感谢。

Kotlin的属性已经附带了getter和setter。每当您说time.hour = 5val currentTime = time.hour-时,就会调用相应的setter或getter

这里的问题不在于构造函数,而在于parcelable所需的CREATOR

完整的示例如下:

class Time(var hour: Int, var minute: Int) : Comparable<Time>, Parcelable {
override fun writeToParcel(dest: Parcel?, flags: Int) {
dest!!.writeInt(hour)
dest.writeInt(minute)
}
override fun describeContents(): Int = 0
override fun compareTo(other: Time): Int {
// your comparsion logic
}
companion object CREATOR : Parcelable.Creator<Time> {
override fun createFromParcel(parcel: Parcel): Time {
return Time(parcel.readInt(), parcel.readInt())
}
override fun newArray(size: Int): Array<Time?> {
return arrayOfNulls(size)
}
}
}

最新更新