我有一个接口A,以及这个接口AImpl 的实现接口有 1 个在AImpl 中实现的方法。实现AImpl 的成员很少,也没有 serialVersionUID。问题 如果新的默认方法将添加到接口A 中,而不在AImpl 中覆盖它,会发生什么?我真的在这里休息了吗?我会得到相同的序列化/反序列化结果吗?
1 回答
![?](http://img1.sycdn.imooc.com/533e4c1500010baf02200220-100-100.jpg)
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
不仅方法没有序列化,接口也没有序列化。
序列化的目的是写入与对象关联的数据,而不是它的行为(除非这也被明确编码为数据,例如 GregorianCalendar 的 TimeZone)
无法在序列化对象中查看类具有哪些接口或方法,因此更改它们无效。
(您可能会推断出仅用于序列化的方法)
Java 序列化确实对类的超类层次结构进行了编码,因此您无法轻易更改。
但是,大多数序列化库不会这样做,您看不到这些信息,更改它们也无关紧要。缺点是许多序列化库不支持在类层次结构中多次使用相同的字段名称,但 Java 序列化支持。
添加回答
举报
0/150
提交
取消