2017-08-23 24 views
6

Java 9では、Stringの内部表現がchar配列からbyte配列に変更されました。Java 9コンパクトString直列化 - 直列化復元とデータ転送

私はJava 9を実行しているシステムで文字列データをシリアル化してから、Java 8システムで逆シリアル化しようとしています。逆の場合も考慮する。

私が考えることができるもう1つの状況は、RMIまたはJMSを使用してJava 8およびJava 9システムで文字列データが送信されることです。

これらのシナリオは、どのように機能しますか?このようなシナリオを処理するためにStringを処理するすべてのメソッドがアップグレードされていますか?

+7

文字列には、シリアル化ストリームで特別な表現があります。この表現は決して変化しない。したがって、安全に文字列を直列化および逆シリアル化できます。 https://docs.oracle.com/javase/6/docs/platform/serialization/spec/protocol.html#stream-elementsを参照してください。 – ZhekaKozlov

答えて

6

Stringのメモリ内表現が変更されたのは間違いありませんが、そのSerializable表現は変更されていません。実際にJava 9でStringをシリアル化しようとしましたが、Java 8で逆シリアル化しましたか?私はあなたがどんな問題にも遭遇するとは思わない。

5

Javaは、これほど基本的なものではないことに頼ることができます。たとえば、Stringは通常DataOutput.writeUTF()でシリアル化されます。この表現は変更されていません。

関連する問題