首页 > 解决方案 > 在一个类中同时使用 Parcelable 类和 Serializable

问题描述

我有具有一些属性的Data类,其中一个属性是实现 Serializable的类,另一个实现 Parcelable,其他属性是 String。

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

具有实现 Parcelable 但不实现 Serializable 的属性的 Data 类的序列化过程中是否有任何问题?

标签: javaandroidserializationparcelable

解决方案


没有问题,因为您没有为 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)
             }
         }
     }
 }


推荐阅读