使用Serializable而不是写入和读取对象到/从文件

Anu*_*EHS 24 java io scjp serializable

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

Sam*_*tta 21

如果对象离开了创建它的JVM,那么该类应该实现Serializable.

序列化是一种方法,通过该方法,对象可以表示为包含对象数据的字节序列,以及有关对象类型和对象中存储的数据类型的信息.

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

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

因此,无论何时,您的对象都有可能离开JVM,程序正在执行,您应该创建类,实现Serializable.

读取/写入对象到文件(内存),或通过Internet或任何其他类型的连接传递对象.每当对象离开创建它的JVM时,它应该实现Serializable,这样一旦它回到另一个/同一个JVM就可以被序列化和反序列化以进行识别.

许多好读:


Rav*_*abu 12

序列化的好处:

  1. 保留数据以备将来使用.

  2. 使用客户端/服务器Java技术(如RMI,套接字编程等)将数据发送到远程计算机.

  3. 将对象展平为内存中的字节数组.

  4. 在群集中的服务器之间发送对象.

  5. 在applet和servlet之间交换数据.

  6. 在Web应用程序中存储用户会话

  7. 激活/钝化企业java bean.

您可以参考这篇文章了解更多详情.


Mar*_* C. 6

如果您希望您的对象在RMI设置中用作数据,它们应该是可序列化的,因为RMI要么需要对象Serializable(如果要将它们序列化并发送到远程端),要么是UnicastRemoteObject需要远程引用的对象.


dom*_*dom 5

在java的早期版本中(在java 5之前),标记接口是声明元数据的好方法,但是目前我们有注释,它们更强大地为类声明元数据.

注释提供了非常灵活和动态的功能,我们可以为注释元详细信息提供配置,我们要么在字节代码中或在运行时发送该信息.

这里如果你不愿意读写对象,那么序列化还有一个目的,就是为类声明元数据,如果你是为类声明元数据那么我建议你不要使用序列化只是去注释.

注释是比标记接口更好的选择,JUnit是使用注释的完美示例,例如@Test用于指定测试类.通过使用测试标记界面也可以实现相同.

还有一个例子表明Annotations是更好的选择@ThreadSafe看起来比实现ThraedSafe标记接口要好得多.