加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:07:57 所属栏目:Java 来源:网络整理
导读:我正在阅读 Java IO的基础知识,我看到,为了在类中使用自定义writeObject函数,必须将其声明为private. private void writeObject(ObjectOutputStream oos); 然后,当我们打电话 oos.writeObject(myClassObject); 此函数在MyClass中查找私有writeObject方法并执
我正在阅读 Java IO的基础知识,我看到,为了在类中使用自定义writeObject函数,必须将其声明为private.

private void writeObject(ObjectOutputStream oos);

然后,当我们打电话

oos.writeObject(myClassObject);

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

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读