java – 为什么ObjectOutputStream.readObject()访问MyClass.readObject()

我正在阅读Java IO的基础知识,我看到,为了在类中使用自定义writeObject函数,必须将其声明为private.

private void writeObject(ObjectOutputStream oos);

然后,当我们打电话

oos.writeObject(myClassObject);

此函数在MyClass中查找私有writeObject方法并执行它.

我的问题是:如果这是真的,那么当一个函数可以调用另一个类的私有方法时,它不会违反Data Abstraction概念吗?这个功能的原因是什么?

解决方法:

我大多在这里做一个有根据的猜测.

序列化的工作方式在逻辑上与单个对象类相关联.继承它并没有多大意义,所以它*是私有的.

它确实违反了一些OO原则,但我可以在这种方法中看到原因.特别是因为序列化已经严重依赖于反射.

上一篇:R语言动量和马科维茨Markowitz投资组合(Portfolio)模型实现


下一篇:序列化流