我正在某些代码上运行 findbugs,它说 readObject(...) 方法必须是私有的才能调用序列化/反序列化?为什么?如果公开的话会有什么问题呢?
About readObject()/writeObject()
作为私有的,情况如下:如果你的类 Bar 扩展了某个类 Foo; Foo 还实现了readObject()/writeObject()
Bar 还实现了readObject()/writeObject()
.
现在,当 Bar 对象被序列化或反序列化时,JVM 需要调用readObject()/writeObject()
自动为 Foo 和 Bar 提供(即无需显式调用这些超类方法)。但是,如果这些方法不是私有的,那么它就会成为方法重写,并且 JVM 无法再调用子类对象上的超类方法。
因此它们必须是私有的!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)