public interface Serializable {
// 아무 메서드도 없음 (Marker Interface)
}
ObjectOutputStream
과 ObjectInputStream
같은 스트림에서 직렬화/역직렬화를 지원하려면 클래스가 Serializable
을 구현해야 합니다.객체
class Person implements Serializable {
private static final long serialVersionUID = 1L; // 권장
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
serialVersionUID
private static final long serialVersionUID
선언하는 것이 권장됩니다.transient 키워드
transient String password;
static 필드
상속 구조
파일 저장
public class Main {
public static void main(String[] args) throws Exception {
Person p = new Person("홍길동", 20);
// 객체를 파일에 직렬화
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"));
oos.writeObject(p);
oos.close();
// 파일에서 객체 복원 (역직렬화)
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"));
Person restored = (Person) ois.readObject();
ois.close();
System.out.println(restored.name + ", " + restored.age);
}
}