Как компактные строки java9 справляются с сериализацией? - PullRequest
0 голосов
/ 23 июня 2018

Я довольно хорошо знаком с Java, но каким-то образом сериализация всегда выходила за рамки моих обязанностей.

В Java9 появилась функция компактных строк , поэтому символы в строках всегда помещаются в массив byte[], а не char[]. Это очень хорошо с точки зрения памяти, позволяя строкам Latin1 занимать (примерно) в 2 раза меньше памяти. Тем не менее, это немного неясно для меня с точки зрения сериализации. Позвольте мне объяснить:

Пусть у нас есть сериализуемый класс:

public class Person implements Serializable
{
    public String name;
    public String surname;

    public Person(String name, String surname)
    {
        this.name = name;
        this.surname = surname;
    }
}

Теперь, если мы будем сериализовать созданного человека в двоичный файл (я не буду копировать и вставлять код, но , как это обычно делается , у нас будет либо двоичный файл, либо байт массив.

Теперь вопрос: если у нас будет сериализация new Person("John", "Doe") и new Person("Jön", "Döe") с использованием java9 +, будут ли они правильно десериализованы в более ранних выпусках java (скажем, java8)? Как мог ява справиться с этим, если может? Благодаря.

...