我有一個接口A,以及這個接口AImpl 的實現接口有 1 個在AImpl 中實現的方法。實現AImpl 的成員很少,也沒有 serialVersionUID。問題 如果新的默認方法將添加到接口A 中,而不在AImpl 中覆蓋它,會發生什么?我真的在這里休息了嗎?我會得到相同的序列化/反序列化結果嗎?
1 回答

翻翻過去那場雪
TA貢獻2065條經驗 獲得超14個贊
不僅方法沒有序列化,接口也沒有序列化。
序列化的目的是寫入與對象關聯的數據,而不是它的行為(除非這也被明確編碼為數據,例如 GregorianCalendar 的 TimeZone)
無法在序列化對象中查看類具有哪些接口或方法,因此更改它們無效。
(您可能會推斷出僅用于序列化的方法)
Java 序列化確實對類的超類層次結構進行了編碼,因此您無法輕易更改。
但是,大多數序列化庫不會這樣做,您看不到這些信息,更改它們也無關緊要。缺點是許多序列化庫不支持在類層次結構中多次使用相同的字段名稱,但 Java 序列化支持。
添加回答
舉報
0/150
提交
取消