Java序列化如何解决循环引用问题?

切诺基

我使用Java进行了序列化测试。我发现Java序列化可以正确处理循环引用。但是Java序列化如何解决循环引用问题?

以下代码正常工作:

public class SerializableTest {

    static class Employee implements Serializable{

        private static final long serialVersionUID = 1L;

        String name;

        int age;

        Employee leader;

        public void say(){
            System.out.println("my name is " + name + ". and I'm " + age + " years old.");
        }

    }

    public static void main(String[] args) throws IOException, ClassNotFoundException {

        ObjectOutput objectOutput = new ObjectOutputStream(new FileOutputStream(new File("tempPath")));

        Employee employee = new Employee();
        employee.name = "Tom";
        employee.age = 41;
        employee.leader = employee;
        employee.say();

        objectOutput.writeObject(employee);

        ObjectInput objectInput = new ObjectInputStream(new FileInputStream(new File("tempPath")));

        Employee readEmployee = (Employee) objectInput.readObject();

        readEmployee.say();
        readEmployee.leader.say();
    }
}
彼得·劳瑞

Java序列化使用IdentityHashMap来映射它尝试序列化为id的每个引用。第一次序列化对象时,它将写入其内容和ID。之后,它只写允许循环引用的id和一个对象的一个​​副本,无论它被引用了多少次。

缺点是,如果保留Object流而不调用reset()它,则会保留您曾经发送的每个对象,从而导致内存使用量增加。同样,如果您更改对象并再次发送它,更改将不会很明显,因为它仅将引用再次发送给该对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何解决由休眠双向映射导致的json序列化器中的循环引用?

如何解决RestKit JSON序列化问题

如何解决Kafka Avro反序列化问题

如何解决java.lang对象多态性的Gson反序列化问题

当序列化具有与该对象相同类型的类成员的对象时,如何解决循环引用

使用通用通配符时,如何解决Gson序列化提供不同结果的问题?

如何解决棉绒警告“从未使用过字段”但已序列化的问题

使用Symfony序列化器时如何解决DateTimeNormalizer问题

如何解决这个二叉树反序列化问题?

如何解决反序列化rest服务返回的xml中的问题?

如何解决反序列化xml文件时生成的问题?

如何解决JSONB序列化的双向关系?

请问sdk如何解决反序列化错误

如何解决Laravel中的序列化关闭错误?

如何解决反序列化中的此错误?

如何解决java.lang.RuntimeException:遇到Parcelable IOException编写可序列化对象

如何解决 redux 工具包“循环引用”问题

Java序列化是否可用于循环引用?

如何使用JSON-B(用于JSON绑定的Java API)序列化循环引用的对象

如何解决Java中没有循环的“ repeatSeparator”问题?

在Java中序列化和反序列化后如何保留引用?

如何解决检测到的循环引用

如何解决TypeError:无法序列化float Python Elementtree

此共享库中的什么是“不可序列化”的,我该如何解决?

如何解决“无效参数:键:功能。无法分析序列化的示例。”

如何解决Django类序列化器断言错误

如何解决TypeError:类型为'Category'的对象不是JSON可序列化的

如何解决 ignitecheckedexception:确保缓存配置中的所有对象都是可序列化的

如何发现Java反序列化问题?