문제

다음과 같은 수업이있는 경우 :

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 빌드와 새 빌드 전에 이전 클래스가 삭제되었다는 사실 일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top