2012-06-05 65 views
2

我重写了方法readObject/writeObject以便自定义我的对象的序列化。问题是这些方法没有任何参数。无论如何传递这些方法的参数,所以我可以在我的序列化过程中使用它们?Java:在readObject/writeObject方法上传递参数

预先感谢您

+1

这些参数如何通过?当调用'objectOutputStream.writeObject(foo)'时,不能给出参数。这个问题没有多大意义。 –

+0

这些方法用于序列化应该可以访问的对象的状态。为什么你想通过参数?如果需要一些信息来定制序列化,那么它应该是对象状态的一部分 –

+0

您期望什么样的参数?序列化对象只需要该对象。如果你想自定义序列化,你需要以不同的方式实现它。 – Marc

回答

1

没有没有选项来传递参数,而且为什么你需要做的。序列化,序列化是编写和读取对象状态的过程,因此在序列化或反序列化之前,您的类应该具有其中的所有属性。

应该没有任何理由将参数传递给这两种方法。

+0

嗯,我同意在大多数情况下它没有任何意义,但让我解释一下我的场景。我有一个包含字段的类记录。每个字段基于Record属性的编码来写入/读取其有效载荷。你对此提出了一个不同的解决方法吗? – Alex

+0

如果字段取决于编码,那么编码应该是字段的一部分,这样做可以完全摆脱此问题 – mprabhat

+0

如果此编码对记录的每个字段都是相同的,则在每个字段中添加属性编码将是冗余。我想要一个能够有效处理这些情况的解决方法 – Alex

0

您不能更改读取/写入方法的签名。绕过它的一种方法是将序列化参数设置并存储在对象中,并在读/写方法中使用它们。

或者你可以创建一个静态类,比如SerializationParameter,并在那里存储你的序列化参数。由于它们是静态的,因此您不必在每个序列化对象的内存中复制它们。