2017-08-23 4 views
6

En Java 9, la représentation interne de String a été modifiée de char array à byte array. Considérons que je suis en train de sérialiser mes données String sur un système exécutant Java 9, puis que je tente de les désérialiser sur un système Java 8. Considérez également la situation inverse.Java 9 Compact String Sérialisation-désérialisation et transfert de données

Une autre situation à laquelle je peux penser est la transmission de données String sur des systèmes Java 8 et Java 9 utilisant RMI ou JMS.

Comment ces scénarios pourraient-ils fonctionner? Toutes les méthodes de gestion de String sont-elles mises à jour pour gérer de tels scénarios?

+7

La chaîne a une représentation spéciale dans les flux de sérialisation. Cette représentation ne change jamais. Vous pouvez donc sérialiser et désérialiser les chaînes en toute sécurité. Voir https://docs.oracle.com/javase/6/docs/platform/serialization/spec/protocol.html#stream-elements – ZhekaKozlov

Répondre

6

Bien qu'il soit vrai que la représentation en mémoire de String a changé, sa représentation Serializable ne l'a pas modifiée. Avez-vous essayé de sérialiser un String en Java 9 et de le désérialiser en Java 8? Je ne pense pas que vous rencontrerez des problèmes.

5

Vous pouvez compter sur Java pour ne rien casser de plus basique. Par exemple, String est généralement sérialisé via DataOutput.writeUTF(). Cette représentation n'a pas changé.