gpt4 book ai didi

java - 接口(interface)实现和Java序列化

转载 作者:行者123 更新时间:2023-11-30 02:57:54 25 4
gpt4 key购买 nike

假设您有以下结构(简化):

interface Inter
{
//...
}

class Impl1 implements Inter, Serializable
{
private static final long serialVersionUID = ...;
//...
}

class Impl2 implements Inter, Serializable
{
private static final long serialVersionUID = ...;
//...
}

class MyClass implements Serializable {
private static final long serialVersionUID = ...;
Inter interInstance; // can be Impl1, Impl2...
}

稍后,您添加一个新的实现:

class Impl3 implements Inter, Serializable
{
private static final long serialVersionUID = ...;
//...
}

...最终得到 MyClass.interInstance 可以采用的三个类。

这会对已经序列化的 MyClass 对象产生影响吗?

我问这个是因为用户(Android 应用程序)一直提示在更新后无法打开某些序列化对象,其中的更改模仿上面的示例(即我只添加​​了一个新的可序列化接口(interface)实现) .

最佳答案

Should that have any impact in MyClass objects that are already serialized?

我对你的问题有点困惑,但如果对象被序列化为 Impl1 或 Impl2 而你试图反序列化为 Impl3 - 这将不起作用。所以结论是当你将对象序列化为 Impl1 时,它必须被反序列化为 Impl1。

顺便说一句,特别是在 Android 中 - 官方支持并推荐如何“序列化”任何类型的对象的方法是 Parcelable 的用法。界面。和 why to use it .

关于java - 接口(interface)实现和Java序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22982684/

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