下面是我目前正在学习的课程
@Parcelize
class Time(var hour:Int, var minute:Int):Comparable<Time>,Parcelable
我想向成员变量hour和minutes添加一个setter,以便它们保持时间格式。并且该类必须通过意图传递,因此它实现了Parcelable。但是它说一个Parcelable类应该有一个主构造函数,所以我在添加setter时遇到了问题。 谁能告诉我原因和解决方案?谢谢。
答案 0 :(得分:2)
Kotlin的属性已经随getter和setter一起提供。每当您说出time.hour = 5
或val currentTime = time.hour
时-会调用相应的setter或getter 。
这里的问题不在于构造函数,而在于可打包的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)
}
}
}