본문 바로가기
자바

SerialVersionUID는 무엇이며 왜 그것을 사용해야합니까?

by º기록 2021. 4. 14.
반응형

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

 

 

반응형

댓글