Java
직렬화
나의 오류는 누군가 겪었던 오류
2023. 10. 3. 00:43
Serializable
Serializable(직렬화)란 자바 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 메커니즘
다른 하드웨어로 저장 할 때 직렬화가 꼭 필요!
Serializable 인터페이스를 implements하여 구현
객체 직렬화 시 private 필드를 포함한 모든 필드를 바이트로
변환하지만 transient키워드를 사용한 필드는 직렬화에서 제외
serialVersionUID 필드
직렬화한 클래스와 같은 클래스임을 알려주는 식별자 역할로
컴파일 시 JVM이 자동으로 serialViersionUID 정적 필드를 추가해
별도로 작성하지 않아도 오류는 나지 않지만
자동 생성 시 역직렬화에서 예상하지 못한 InvalidClassException을 유발할 수 있어 명시 권장
public class Person implements Serializable{
private static final long serialVersionUID = - 6423919775137290062L;
...
}