java - 使用可序列化而不是向/从文件写入和读取对象

标签 java io serializable scjp

在哪些情况下,使用实现可序列化而不是向/从文件写入和读取对象是一种很好的编码实践。在一个项目中,我经历了代码。使用实现可序列化的类,即使在该类/项目中没有任何写入/读取对象到/从文件?

最佳答案

如果对象离开创建它的 JVM,则该类应实现 Serializable。

序列化是一种可以将对象表示为字节序列的方法,其中包括对象的数据以及有关对象类型和对象中存储的数据类型的信息。

序列化的对象写入文件后,可以从文件中读取并进行反序列化,即表示对象及其数据的类型信息和字节可用于在内存中重新创建对象。

这是反序列化的主要目的。从对象的书面(松散地说)表示中获取对象信息、对象类型、变量类型信息。因此,首先需要序列化,才能实现这一点。

所以,只要你的对象有可能离开 JVM,程序正在其中执行,你就应该创建类,实现 Serializable。

将对象读/写到文件(内存)中,或通过 Internet 或任何其他类型的连接传递对象。每当对象离开创建它的 JVM 时,它应该实现 Serializable,以便在它重新进入另一个/相同的 JVM 时可以对其进行序列化和反序列化以进行识别。

很多不错的读物:

关于java - 使用可序列化而不是向/从文件写入和读取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524162/

相关文章:

c# - 为属性设置默认值并使其可序列化

c# - 重命名可序列化类

java - 如何在 hql 或 jpql 查询中查询两个不同的数据库(在不同的服务器上)?

java - Mockito 方法为使用的变量抛出空指针异常

java - 如何构建 JVM 项目来隔离专有代码?

c++ - Windows硬盘实时复制

android - 为什么这个简单的可序列化对象抛出 NotSerializableException?

java - Cursor,CursorAdapter,LoaderManager,Loader之间的关系

父类和子类中文件 I/O 的 C++ 问题

linux - 命令的管道结果作为参数