在一个 class 中同时使用 Parcelable class 和 Serializable
Using both Parcelable class and Serializable in one class
我有 class Data 具有一些属性,其中 属性 之一是 class, 实现Serializable和另一个实现了Parcelable,其他属性是String.
我想让这个 Class(数据)实现序列化。
数据 class 与 属性 实现 Parcelable 但未实现 Serializable 的序列化过程中是否存在任何问题?
没有问题,因为您没有为 Parcelable 实现引入任何新属性。标准实现只为您提供一些辅助方法 describeContents
和 writeToParcel
以及一个静态 CREATOR
对象,它不会成为序列化内容的一部分。
示例:
class MyParcelable private constructor(`in`: Parcel) : Parcelable {
private val mData: Int = `in`.readInt()
override fun describeContents(): Int {
return 0
}
override fun writeToParcel(out: Parcel, flags: Int) {
out.writeInt(mData)
}
companion object {
val CREATOR: Parcelable.Creator<MyParcelable?>
= object : Parcelable.Creator<MyParcelable?> {
override fun createFromParcel(`in`: Parcel): MyParcelable? {
return MyParcelable(`in`)
}
override fun newArray(size: Int): Array<MyParcelable?> {
return arrayOfNulls(size)
}
}
}
}
我有 class Data 具有一些属性,其中 属性 之一是 class, 实现Serializable和另一个实现了Parcelable,其他属性是String.
我想让这个 Class(数据)实现序列化。
数据 class 与 属性 实现 Parcelable 但未实现 Serializable 的序列化过程中是否存在任何问题?
没有问题,因为您没有为 Parcelable 实现引入任何新属性。标准实现只为您提供一些辅助方法 describeContents
和 writeToParcel
以及一个静态 CREATOR
对象,它不会成为序列化内容的一部分。
示例:
class MyParcelable private constructor(`in`: Parcel) : Parcelable {
private val mData: Int = `in`.readInt()
override fun describeContents(): Int {
return 0
}
override fun writeToParcel(out: Parcel, flags: Int) {
out.writeInt(mData)
}
companion object {
val CREATOR: Parcelable.Creator<MyParcelable?>
= object : Parcelable.Creator<MyParcelable?> {
override fun createFromParcel(`in`: Parcel): MyParcelable? {
return MyParcelable(`in`)
}
override fun newArray(size: Int): Array<MyParcelable?> {
return arrayOfNulls(size)
}
}
}
}