gpt4 book ai didi

java - 使用接口(interface)中的默认方法序列化 (BWC)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:58 27 4
gpt4 key购买 nike

我有一个接口(interface)A,以及这个接口(interface)的实现AImpl

接口(interface)有 1 个方法,在 AImpl 中实现。实现 AImpl 的成员很少,也没有 serialVersionUID。

问题如果将新的默认方法添加到接口(interface)A,而不在AImpl 中覆盖它,会发生什么?我在这里休息了吗?我会得到相同的序列化/反序列化结果吗?

最佳答案

不仅方法没有序列化,接口(interface)也没有序列化。

序列化的目的是写入与对象关联的数据,而不是它的行为(除非它也被显式编码为数据,例如 GregorianCalendar 的 TimeZone)

无法在序列化对象中看到类具有哪些接口(interface)或方法,因此更改它们无效。

(您可能仅推断用于序列化的方法)

Java 序列化确实对类的父类(super class)层次结构进行了编码,因此您无法轻易更改它。

但是,大多数序列化库不会这样做,您看不到这些信息,即使您更改它们也没有关系。缺点是许多序列化库不支持在类层次结构中多次使用相同的字段名称,但 Java 序列化支持。

关于java - 使用接口(interface)中的默认方法序列化 (BWC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51397566/

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