【轉】Parcelable, Serializable,Cloneable,copyProperties
Copying ... https://blog.csdn.net/max2005/article/details/78325036
存在著三件事,整理如下
Parcelable, Serializable(包括Externalizable+transient) -------壓縮成字節流,再恢復成同類對象
Parcelable手工將字段放入Parcel字節流,無反射
Serializable使用反射來發現字段及輔助信息
Serializable使用Stream或ArrayByte之類字節流
Externalizable+transient可以在Serializable過程中攔截並改變數據
必須保證父類子類從上到下的整個層級均實現了Parcelable或Serializable,從而完整遍歷
ArrayList+LinkedList,HashSet,HashMap均標明支持Serializable
Cloneable/clone -----------目的是拷貝出一個同類對象,不需要傳輸,所以可以無需壓縮打包
存在淺拷貝與深拷貝之分,在父類到子類的整個層級中都要『非常小心』
Java語言本身支持的clone采用反射來發現字段
必須保證父類子類從上到下的整個層級均實現了Cloneable,如同Serializable,從而完整遍歷
ArrayList+LinkedList,HashSet,HashMap均標明支持Cloneable,如同Serializable
通過Parcelable或Serializable操作可以實現clone,但因反射及壓縮,效率比字段直接拷貝低很多
不同類的對象之間,同字段的拷貝 ---------- 字段對應,不同類。應該是根據反射出的字段名進行拷貝
怎樣實現?可以使用第三方BeanUtils.copyProperties,在兩個不同的bean之間拷貝同名字段
【轉】Parcelable, Serializable,Cloneable,copyProperties