@TryLoveCatch
2022-04-17T17:59:49.000000Z
字数 807
阅读 541
Java知识体系之序列化&反序列化
Java知识体系
序列化&反序列化
Serializable 和Parcelable的区别
1、平台区别
- Serializable是属于 Java 自带的,表示一个对象可以转换成可存储或者可传输的状态,序列化 后的对象可以在网络上进行传输,也可以存储到本地。
- Parcelable 是属于 Android 专用。不过不同于Serializable,Parcelable实现的原理是将一个 完整的对象进行分解。而分解后的每一部分都是Intent所支持的数据类型。
2、编写上的区别
- Serializable代码量少,写起来方便
- Parcelable代码多一些,略复杂
3、选择的原则
- 如果是仅仅在内存中使用,比如activity、service之间进行对象的传递,强烈推荐使用 Parcelable,因为Parcelable比Serializable性能高很多。因为Serializable在序列化的时候会产 生大量的临时变量, 从而引起频繁的GC。
- 如果是持久化操作,推荐Serializable,虽然Serializable效率比较低,但是还是要选择它, 因为在外界有变化的情况下,Parcelable不能很好的保存数据的持续性。
4、本质的区别
- Serializable的本质是使用了反射,序列化的过程比较慢,这种机制在序列化的时候会创建 很多临时的对象,引起频繁的GC
- Parcelable方式的本质是将一个完整的对象进行分解,而分解后的每一部分都是Intent所支 持的类型,这样就实现了传递对象的功能了。
参考
https://javaguide.cn/java/basis/serialization.html#%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E7%9B%B8%E5%85%B3%E6%A6%82%E5%BF%B5