2017-08-23 31 views
6

Trong Java 9 biểu diễn bên trong của String đã được thay đổi từ mảng char thành mảng byte.Java 9 Chuỗi nhỏ gọn Serialization-deserialization & truyền dữ liệu

Hãy xem xét tôi đang tuần tự hóa dữ liệu Chuỗi của mình trên một hệ thống chạy Java 9 và sau đó cố gắng deserialize nó trên một hệ thống Java 8. Cũng xem xét tình hình ngược lại.

Một tình huống nữa mà tôi có thể nghĩ đến là dữ liệu chuỗi được truyền trên các hệ thống Java 8 và Java 9 sử dụng RMI hoặc JMS.

Làm cách nào để các tình huống này có thể hoạt động? Có phải tất cả các phương thức xử lý String đang được nâng cấp để xử lý các tình huống như vậy không?

+7

Chuỗi có một đại diện đặc biệt trong luồng tuần tự hóa. Biểu diễn này không bao giờ thay đổi. Vì vậy, bạn có thể an toàn serialize và deserialize dây. Xem https://docs.oracle.com/javase/6/docs/platform/serialization/spec/protocol.html#stream-elements – ZhekaKozlov

Trả lời

6

Trong khi đúng là biểu diễn trong bộ nhớ của String đã thay đổi, đại diện Serializable của nó không có. Bạn đã thực sự cố gắng để tuần tự hóa một String trong Java 9 và deserialize nó trở lại trong Java 8? Tôi không nghĩ rằng bạn sẽ gặp phải bất kỳ vấn đề nào.

5

Bạn có thể dựa vào Java không phá vỡ điều gì đó cơ bản như thế này. Ví dụ: String thường được đăng theo thứ tự thông qua DataOutput.writeUTF(). Biểu diễn này không thay đổi.

Các vấn đề liên quan