【发布时间】:2013-08-11 23:07:26
【问题描述】:
我编写了一个 Android 应用程序,用于生成“摄影服务”合同并将其作为文件保存到设备中以供以后打印。该类几乎由整数、双精度数和字符串(包括 base64_encoded 签名)组成。
该类实现可序列化。但是,我担心我更新应用程序,忘记不编辑类并编辑它,重新加载到我的设备上并将 X 数量的合同保存到一个文件中,然后无法检索它们。
之前我浏览并找到了serialVersionUID。在一篇文章中,我只是通过实现这个简单的 long 值来阅读,如果我更新类,它仍然可以被读取。它是否正确?我阅读了 Serializable 的 java 文档,无法对实现 serialVersionUID 的结果做出太多决定。
谁能帮我解释一下这个问题? 只需一个简单的“是”,这将起作用,或者“否”,这不会起作用就足够了,任何帮助我学习的链接都会更好!
【问题讨论】:
-
简短回答:你不能。这不是 Java 中序列化的工作方式(或者它的真正含义)。您可能想要使用 JSON 或其他更动态和更宽容的序列化方案/库。
-
如果向后兼容性绝对重要,请使用其他机制。
-
简短的回答,您可以,但是您确实需要非常仔细地阅读对象序列化规范的版本控制章节,并在您的更改中保持在这些范围内。
标签: java serialization serialversionuid