java - 自定义 Java 序列化

标签 java serialization object customization

我正在经历一个 blog我想到了一个问题。是否可以覆盖 ObjectOutputStream 的写入方式。

假设我正在写入文件 out.dat 即

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File("C:\\out.dat")));
out.writeObject(o);

当我在 Notepad++ 中打开文件 out.dat 时,我看到了二进制数据。这是有道理的。如果我想自定义写入此数据的方式怎么办。可以说我想要 JSON 格式的 out.dat 文件(这只是一个例子,它可以是任何其他格式)。我应该覆盖什么方法来做到这一点?

最佳答案

您将能够通过实现 Externalizable 并覆盖 writeExternal 和 readExternal 方法来执行您想要的操作。参见 http://download.oracle.com/javase/7/docs/platform/serialization/spec/output.html#3146了解详情。

请注意,它将允许自定义一个对象序列化的输出,但不能自定义整个流的格式。因此,您会在其他二进制数据中找到您的 JSON 字符串。

关于java - 自定义 Java 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421728/

相关文章:

java - 图像作为 JScrollPane 中的背景

java - Gson反序列化抛出转换错误

JavaScript : how to push into object's attribute

c++ - C++中的多个降序对象

java - 如何创建 JPA 二级缓存以与实体的辅助键一起使用?

c# - 如何找到所有不同的组合作为字符串字符的不同长度的单位

ruby-on-rails - rails hash.as_json 方法产生带有 bool 值的意外结果

c++ - 类扩展 GtkWindow

java - 为什么 appfuse 不发送电子邮件? (SMTP发送失败异常)

java - Gson序列化取决于字段值