객체 직렬화는 Java 객체를 바이트 스트림(byte stream)으로 변환하는 과정입니다. 이를 통해:
Serializable 인터페이스를 구현해야 합니다:import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
// 이하 생략
}
serialVersionUID 필드는 직렬화 및 역직렬화를 수행할 때 이 클래스의 버전을 의미해요.
반드시 필요한 값은 아니지만, 명시적으로 선언하는 것이 좋습니다.static, long, 변수명(serialVersionUID)은 반드시 지켜야하는 규칙입니다.
private, final은 필수는 아니지만 권장사항입니다.ObjectOutputStream을 사용하여 객체를 직렬화합니다:Person person = new Person("김철수", 25);
// 파일에 객체 직렬화하기
try (FileOutputStream fos = new FileOutputStream("person.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
) {
oos.writeObject(person);
} catch (IOException e) {
e.printStackTrace();
}
.ser 확장자를 사용합니다.try-with-resource 구문을 통해 자동으로 리소스를 닫아줍니다.역직렬화는 바이트 스트림을 다시 Java 객체로 변환하는 과정입니다.
ObjectInputStream을 사용하여 바이트 스트림을 객체로 복원합니다: