序列化和简单地将对象存储在磁盘上有什么区别?

bun*_*ell 4 java serialization objectoutputstream serializable fileoutputstream

我对此感到困惑。因为在实现 Serializable 类时,我们需要使用类似的类FileOutputStreamObjectOutputStream或者类似的东西。那我们为什么不直接用这些类来做输出对象到文件、从文件输入对象这样的事情,直接维护对象的状态呢?为什么我们要先实现 Serializable 然后再做同样的事情?

SiB*_*SiB 5

这样理解...

Serializable 是标记接口,它表示您的类的对象可以转换为字节流,并在需要时最终返回 Java 对象。最初您可能认为每个类都应该是可序列化的,但考虑到这是不正确的

Input- 和 OutputStreams 有一些文件句柄可供读取。当流变得不可用时,该文件句柄将关闭。所以在这种情况下序列化没有意义;并且反序列化永远不会恢复那个句柄。

所以这应该回答为什么需要标记为 Serializable ?

现在实现定义对象应该如何写入或读取的方法;这应该由您定义,因此您需要所有这些流对象和 readObject、writeObject 方法。希望这能让您对这个概念有更多的了解。