//使用kotlin的插件自动生成Parcelable的对象,往往不能直接进行使用,需按照下面的格式进行修改。
class Student : Parcelable {
var name: String = ""
var sex: String = ""
var age: Int = 0
constructor(source: Parcel) : this( //这是调用了下面的三个参数的构造器,然后进行赋值
source.readString(), //这个要跟下面的构造器的参数进行一一对应
source.readString(),
source.readInt()
)
constructor(name:String,sex:String,age:Int){
this.name=name
this.sex=sex
this.age=age
}
//必须有空参的构造器,这样可以创建无参的对象
constructor()
override fun describeContents() = 0
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) { //在这里应该是将数据写成序列化数据
writeString(name)
writeString(sex)
writeInt(age)
}
override fun toString(): String {
return "Student(name='$name', sex='$sex', age=$age)"
}
companion object {
@JvmField
val CREATOR: Parcelable.Creator<Student> = object : Parcelable.Creator<Student> {
override fun createFromParcel(source: Parcel): Student = Student(source)//在这里会调用构造函数
override fun newArray(size: Int): Array<Student?> = arrayOfNulls(size)
}
}
}