没有系统地学习过序列化这东西,了解一下。 Java基础学习总结——Java对象的序列化和反序列化
以及一些经历。
什么是序列化
把对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为对象的过程称为对象的反序列化。
也就是说,把内存里的 Object 写成硬盘上的文件进行持久化保存,要用的时候再取出来。
或者,将对象转换成字节序列(二进制)后在网络上进行传输。
什么东西需要序列化
如何序列化
提醒
由于序列化是根据 class 里面的 UID 来判断是否一致的,那么就存在以下两种情况:
- 当希望 class 的版本向后兼容时,可以保持 UID 不变,那么老的(已经序列化的)文件依旧可以进行反序列化。
- 当不希望兼容时,要更改/更新 class 中的 UID,那么进行反序列化时就会报错。
思考
有哪些常见类实现了序列化?为什么?
String
Session
更新 2020.12.30~31
序列化之后会发生什么?
今天碰到一个事,一个类的构造函数的一个入参是Map<String, String>
,如果我传一个null
进去的话,经过序列化+反序列化之后,他会变成一个空Map
而不是原本的null
。
啊这?好好理解一下……
<To be continued … … >