Android 如何克隆地块对象
我要克隆地块对象(不可地块) 我无法使用clone()方法,因为它受保护。我也不能使用反射来调用它,因为Parcel类不实现“clonable” 我尝试执行问题的解决方案:Android 如何克隆地块对象,android,clone,parcelable,cloneable,parcel,Android,Clone,Parcelable,Cloneable,Parcel,我要克隆地块对象(不可地块) 我无法使用clone()方法,因为它受保护。我也不能使用反射来调用它,因为Parcel类不实现“clonable” 我尝试执行问题的解决方案: 但它不适用于地块类型本身,原因是没有为地块类型本身定义“writeToParcel”。因此,对于对象“Parcel a”,a.writeToParcel(Parcel,0)将不会编译。您可以通过编组/解编组来完成此操作 byte[] rawData = original.marshall(); Parcel clone =
但它不适用于地块类型本身,原因是没有为地块类型本身定义“writeToParcel”。因此,对于对象“Parcel a”,a.writeToParcel(Parcel,0)将不会编译。您可以通过编组/解编组来完成此操作
byte[] rawData = original.marshall();
Parcel clone = Parcel.obtain();
clone.unmarshall(rawData, 0, rawData.length);
clone.setDataPosition(original.dataPosition());
但这并不适用于所有包裹。我认为它在带有活动对象的包裹上失败,但我还没有测试以确保。使用
packet.appendFrom()
这比编组和解编组效率更高,而且不会丢失有关包中对象引用或FileDescriptor
s的任何数据
来源:无意中听到安卓框架开发人员谈到这一点,并决定更新Stackoverflow问题。否决投票,因为这是一个不完整的解决方案,而且没有真正的性能。包裹是要走的路。