在一个 class 中同时使用 Parcelable class 和 Serializable

Using both Parcelable class and Serializable in one class

我有 class Data 具有一些属性,其中 属性 之一是 class, 实现Serializable和另一个实现了Parcelable,其他属性是String.

我想让这个 Class(数据)实现序列化。

数据 class 与 属性 实现 Parcelable 但未实现 Serializable 的序列化过程中是否存在任何问题?

没有问题,因为您没有为 Parcelable 实现引入任何新属性。标准实现只为您提供一些辅助方法 describeContentswriteToParcel 以及一个静态 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)
             }
         }
     }
 }