gpt4 book ai didi

java - Java对象的选择性序列化

转载 作者:搜寻专家 更新时间:2023-11-01 03:00:55 25 4
gpt4 key购买 nike

考虑我的 java 类中有 10 个字段的情况。我想要的是,对其中的几个(比如 3 个)做一些特殊处理,其余字段已通过默认的 ObjectOutputStream 实现序列化。有办法实现吗?

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

谢谢

最佳答案

您可以执行以下操作:

  • 将三个特殊字段声明为 transient
  • 实现 writeObject(ObjectOutputStream out) 并在此方法中:
  • 使用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;
...
}

关于java - Java对象的选择性序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com