Это общий вопрос о Java-сериализации.java serialization, serialVersionUID и версия класса
У меня есть некоторый класс Person.java с 2 строковых полей - имя, фамилия:
public class Person implements Serializable {
private static final long serialVersionUID = -460531025539746041L;
private String name;
private String lastName;
public String getName() {
return name;
}
public String getLastName() {
return lastName;
}
public void setName(String name) {
this.name = name;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
Я сериализацией этого класса, используя некоторый сериалайзер, скажем this one. Я отправляю сериализованные данные на другой сервер через сеть, затем он де-сериализуется на целевом сервере с использованием того же самого сериализатора, насколько это хорошо.
Теперь предположим, что класс Person был изменен (добавлено новое поле). Требуется ли какая-либо адаптация с моего конца (версия мудрая или любой другой аспект), чтобы данные были полностью переданы?
Да, хотя кто-то еще должен будет объяснить детали. Я хотел бы отметить, что это одна из многих причин, почему использование чего-то вроде JSON часто является лучшим вариантом, чем бинарный протокол для конкретной платформы. – chrylis
Чего вы хотите достичь? Должен ли приемник иметь возможность десериализовать то, что вы отправляете, несмотря на то, что у него все еще есть старая версия класса? Обновлен ли класс и на принимающей стороне? Что происходит, когда вы проверяете это? –
@JBNizet Приемник должен иметь возможность получать обновленные данные. Чтобы это произошло, следует ли изменить версию для каждого изменения в классе? и что еще? – forhas