Java对象的选择性序列化



考虑一个例子,在我的java类中有10个字段。我想要的是,对其中的一些字段(比如3)进行一些特殊处理,其余字段通过默认的ObjectOutputStream实现进行序列化。有办法做到这一点吗?

我可以在我的类中提供writeObject(ObjectOutputStream os)的实现来专门处理这3个字段,但如何默认其余字段。

感谢

您可以执行以下操作:

  • 将三个特殊字段声明为瞬态
  • 实现CCD_ 1,并且在该方法中:
  • 使用ObjectOutputStream.defaultWriteObject()以默认方式写入所有其他字段
  • 然后为特殊字段添加自定义序列化

并添加模拟实现来读取对象。

public class MyClass implements Serializable
{
    private void writeObject(java.io.ObjectOutputStream out) throws IOException
    {
        out.defaultWriteObject();
        // add code to write the special fields
    }
    private void readObject(java.io.ObjectInputStream in) throws IOException
    {
        in.defaultReadObject();
        // add code to read the special fields
    }
    private transient int special1;
    ...
}

最新更新