在接受默认序列化时封装如何被破坏?

Gee*_*eek 5 java serialization encapsulation information-hiding deserialization

我经常听到人们说序列化破坏了封装,并且通过提供自定义序列化可以在一定程度上最小化这种封装的损失。有人可以提供一个具体的例子来证明默认序列化导致的封装损失是合理的,以及如何通过采用自定义序列化来最小化这种损失?

我将这个问题标记为与 Java 相关,但答案可能与语言无关,因为我认为这是跨平台和语言的常见问题。

Evg*_*eev 0

Java 默认序列化按字段写入和读取,这种方式暴露了对象的内部结构,从而破坏了封装。如果更改类的内部结构,您可能无法正确恢复对象状态。在使用自定义序列化时,如果您更改了类,您可以尝试更改 readObject,以便可以正确恢复保存的对象。