Eclipse serialversionUID
가 누락되면 경고가 발생합니다.
Serializable 클래스 Foo는 정적 최종을 선언하지 않습니다. SerialVersionUID 유형의 필드입니다
serialversionUID
란 무엇이며 왜 중요합니까? serialversionUID
누락 된 예제를 보여주십시오.
해결 방법
직렬화 런타임 동료와 직렬화 된 객체의 보낸 사람과 수신자가 존경과 호환되는 해당 객체에 대한 클래스가로드되었는지 확인하기 위해 deserialization에서 사용되는
serialversionUID
라는 버전 번호와 함께 사용되는 버전 번호와 함께직렬화에.수신자가 해당 송신자의 클래스보다 다른serialversionuid
를 가진 객체에 대한 클래스를로드 한 경우 deserialization은
ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;
Serializable 클래스가
serialversionUID
를 명시 적으로 선언하지 않으면, 직렬화 런타임은 클래스의 다양한 측면을 기반으로 해당 클래스의 기본serialversionuid
값을 계산합니다. Java (TM) 오브젝트 직렬화 사양. 그러나 모든 직렬화 가능한 클래스는 기본serialversionuid
계산이 다양 할 수있는 클래스 세부 정보에 매우 민감하기 때문에 모든 직렬화 가능한 클래스가serialversionuid
값을 명시 적으로 선언하는 이 강력하게 권장됩니다. 컴파일러 구현에 따라 Deserialization 동안 예기치 않은invalidClassExceptions
를 초래할 수 있습니다. 따라서 다른 Java 컴파일러 구현에서 일관된serialversionuid
값을 보장하기 위해 Serializable 클래스는 명시 적serialversionuid
값을 선언해야합니다. 또한 명시 적serialversionUID
선언이 가능한 경우 개인 수정자를 사용하는 것이 좋습니다. 그러한 선언은serialversionUID
필드에 즉시 선언하는 즉시 적용되므로 상속 된 구성원으로 유용하지 않기 때문입니다.
참조 페이지 https://stackoverflow.com/questions/285793
'자바' 카테고리의 다른 글
새 요소를 배열에 추가하는 방법은 무엇입니까? (0) | 2021.04.16 |
---|---|
Java에서 다른 생성자를 어떻게 호출합니까? (0) | 2021.04.14 |
파일을 만들고 쓸 수 있습니까? (0) | 2021.04.14 |
"비 정적 메소드가 정적 컨텍스트에서 참조 할 수 없음"이유는 무엇입니까? (0) | 2021.04.14 |
정규 표현식에서 "어떤 문자"와 일치하는 방법은 무엇입니까? (0) | 2021.04.14 |
댓글