Java 9紧凑字符串序列化-反序列化和数据传输

6
在Java 9中,String的内部表示已从char数组更改为byte数组。
假设我在运行Java 9的系统上将我的String数据序列化,然后尝试在Java 8系统上对其进行反序列化。同样考虑相反的情况。
我还能想到一种情况,即在Java 8和Java 9系统之间使用RMI或JMS传输String数据。
这些情况可能如何工作?所有处理String的方法是否都升级以处理这些情况?

7
字符串在序列化流中有特殊的表示方式,这种表示方式永远不会改变。因此,您可以安全地对字符串进行序列化和反序列化操作。详见 https://docs.oracle.com/javase/6/docs/platform/serialization/spec/protocol.html#stream-elements - ZhekaKozlov
2个回答

6

虽然 String 的内存表示确实已经发生了变化,但它的 Serializable 表示并没有改变。你是否尝试过在 Java 9 中序列化一个 String,然后在 Java 8 中反序列化呢?我认为你不会遇到任何问题。


5
你可以信赖Java不会破坏这个基本功能。例如,String通常通过DataOutput.writeUTF()进行序列化。该表示形式并没有改变。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接