gpt4 book ai didi

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

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

我在学习 Java IO 的基础知识时发现,为了在类中使用自定义 writeObject 函数,必须将其声明为私有(private)。

private void writeObject(ObjectOutputStream oos);

然后,当我们调用

oos.writeObject(myClassObject);

此函数在 MyClass 中查找私有(private)的 writeObject 方法并执行它。

我的问题是:如果这是真的,那么当一个函数可以调用另一个类的私有(private)方法时,是否违反了数据抽象概念?此功能的原因是什么?

最佳答案

我主要是在这里进行有根据的猜测。

序列化的工作方式在逻辑上与单个对象类相关联。继承它真的没有意义,所以它被强制私有(private)。

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

关于java - 为什么 ObjectOutputStream.readObject() 访问 MyClass.readObject(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31450239/

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