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原则,但我可以在这种方法中看到原因.特别是因为序列化已经严重依赖于反射. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |