您好我正在使用不同的 VM(Oracle 热点,jse)序列化一个对象并使用 android VM(dalvik)反序列化它。会有什么问题吗?
1 回答
假设通过“序列化”你的意思是Serializable
,那么是的。不保证不同 VM 之间的序列化相同。请使用其他东西(例如,XML、JSON)。
更新
你的第一条评论有缺陷,我无法用 500 个字符来回答。
当然是的。没有实现 Serializable 我们不能序列化
有才华的程序员可以。有才华的程序员可以将数据序列化为 XML、JSON、Protocol Buffers、Thrift、ASN.l、YAML 和任何数量的其他格式。
实际上我正在做的是我正在使用 ObjectOutputStream(oracle 热点)将对象写入网络并使用 ObjectInputStream 在 android 上读取该对象
有才华的程序员使用独立于平台的序列化方法,例如我上面列出的任何一种。那是因为有才华的程序员意识到,在未来,可能需要有不是基于 Java 的客户端或服务器。
所以你的意思是说现在这很好,但将来不能保证。
不,我写道:
不保证不同 VM 之间的序列化相同。
使用一个 VM(例如 Oracle)序列化的对象应该能够使用该 VM反序列化。无法保证使用一个 VM 序列化的对象可以使用另一个 VM 反序列化。事实上,开发人员在试图准确地做你想做的事情时遇到了麻烦。这是才华横溢的程序员使用独立于平台的序列化结构的另一个例子。