Я довольно хорошо знаком с 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)? Как мог ява справиться с этим, если может? Благодаря.