0

我需要对java中的序列化进行一些澄清。如果我正在序列化一个对象并且我想通过 RMI 返回该对象,我是否只是在我的对象的自定义类上实现可序列化?我见过 objectoutputstream 和 objectinputstream 但我不知道是否需要使用它们,因为我不太了解它们的用法。我的第二个问题是我将如何使 arraylist 可序列化?我的第三个问题可能与我的第一个问题有关,但是我如何在返回对象之前对其进行编组?序列化对象会在过程中编组它吗?

让我们调用有问题的类句子:

public class Sentence implements Serializable  {

}

然后我将创建该类的一个实例并从其他类返回该对象

4

2 回答 2

2
  1. 是的:实现 Serializable 使您的对象可序列化,除非它引用不可序列化的对象。RMI 内部使用对象流来发送和接收对象。如果使用 RMI,则不需要使用它们。如果你想使用套接字发送一个对象,或者将它保存到一个文件中,那么你可以使用它们。

  2. ArrayList 已经是可序列化的。看看它的javadoc。你不必做任何事情。

  3. 您只需从 RMI 方法中返回对象,RMI 就会为您序列化它。序列化和编组是两个基本上意思相同的词。同样,如果 RMI 方法接受一个参数,RMI 将序列化作为参数传递的对象,将其发送到 RMI 服务器,RMI 服务器将对其进行反序列化,然后调用您的实际方法。这一切都由 RMI 为您完成。

于 2013-11-02T11:00:10.217 回答
1

Serializable就是所谓的标记界面;它只是告诉 Java 你的类有一些能力,而不需要你实现任何特定的方法。在您的类中实现它会告诉 JVM 可以(有意义)获取 Java 对象的字段并将它们转换为打包形式以供以后使用或在另一台计算机上使用。

如果您班级中的所有字段都是Serializable. 如果您的字段不是Serializable,例如保存网络连接或本机资源的字段,则需要标记它们(被序列化忽略)并在您的类通过覆盖和/或transient反序列化时注意设置它们.readObjectwriteObject

于 2013-11-02T10:57:19.283 回答