메소드를 추가하면 수업에서 Java 계산 SerialversionUid가 변경됩니까?
-
14-09-2019 - |
문제
다음과 같은 수업이있는 경우 :
public class Name implements Serializable {
private final String firstName;
private final String lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
다른 방법 (및 추가 필드가 없음)을 추가하면 계산 된 SerialversionUID 변경이 변경됩니까?
예를 들어 메소드 추가 :
public String getFullName() {
return firstName + " " + lastName;
}
또는 이것을 알아낼 수있는 좋은 도구가 있습니까?
해결책
그렇습니다 serialVersionUID
.
당신은 사용할 수 있습니다 serialver
명령 줄 도구 - 적어도 SUN의 JDK에서 serialVersionUID
주어진 컴파일 클래스의 경우.
다른 팁
예, 변할 것입니다. 쉬운 방법은 일식입니다. 클래스가 직렬화 가능하고 SerialversionUid 필드를 제공하지 않으면 IDE에 경고 기호가 표시됩니다. 경고 표시를 클릭하고 "생성 된 직렬 버전 UID 추가"를 선택할 수 있습니다. 이렇게하면 SerialversionUid를 계산하고 코드에 삽입합니다.
콩을 테스트하기 시작했을 때 수업이 있었을 때 SerialversionUid가 재생되는 것처럼 보였습니다. 편집, 서명이 변경 될 때뿐만 아니라 그 이유는 Maven 빌드와 새 빌드 전에 이전 클래스가 삭제되었다는 사실 일 수 있습니다.
제휴하지 않습니다 StackOverflow