이것은 자바 직렬화에 대한 일반적인 질문입니다.자바 직렬화, serialVersionUID 및 클래스 버전
내가이 개 문자열 필드 일부 클래스 Person.java이 - 이름이 lastName :
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
달성하고자하는 것은 무엇입니까? 수신자가 클래스의 이전 버전을 가지고 있음에도 불구하고 보내는 내용을 deserialize 할 수 있습니까? 수신 측에서도 클래스가 업데이트 되었습니까? 테스트 할 때 어떻게됩니까? –
@JBNizet 수신기는 업데이트 된 데이터를 수신 할 수 있어야합니다. 이를 위해 클래스의 각 변경 사항에 대한 버전을 변경해야합니까? 그리고 또 뭐? – forhas