Kotlin Data Class 手动实现 Parcelable 序列化:标准写法与示例
在 Kotlin 中,可以使用 'Parcelable' 接口来实现对象的序列化和反序列化。要实现 'Parcelable',通常需要使用 '@Parcelize' 注解,但也可以通过手动实现 'Parcelable' 接口来避免使用注解。
下面是手动实现 'Parcelable' 的标准写法:
import android.os.Parcel
import android.os.Parcelable
data class MyClass(val name: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString()!!,
parcel.readInt()
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(name)
parcel.writeInt(age)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<MyClass> {
override fun createFromParcel(parcel: Parcel): MyClass {
return MyClass(parcel)
}
override fun newArray(size: Int): Array<MyClass?> {
return arrayOfNulls(size)
}
}
}
在上面的代码中,'MyClass' 实现了 'Parcelable' 接口,并手动实现了 'writeToParcel()' 和 'createFromParcel()' 方法。'writeToParcel()' 方法将对象的属性写入 'Parcel','createFromParcel()' 方法从 'Parcel' 中读取属性并创建新的对象。
然后,可以在需要序列化和反序列化的地方使用 'MyClass' 对象。例如,可以将对象写入 'Intent':
val myObject = MyClass("John Doe", 25)
val intent = Intent()
intent.putExtra("myObject", myObject)
然后,可以从 'Intent' 中读取对象:
val myObject = intent.getParcelableExtra<MyClass>("myObject")
这种方式避免了使用 '@Parcelize' 注解,但需要手动实现 'Parcelable' 接口的方法。
原文地址: http://www.cveoy.top/t/topic/cP6k 著作权归作者所有。请勿转载和采集!