자바 시스템 내부에서 사용되는 객체/데이터를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태 데이터로 변환하고(직렬화), 다시 객체로 변환(역직렬화)하는 기술
Serializable 인터페이스를 구현
public class Member implements Serializable {...}
Serializable 인터페이스를 구현한 클래스를 상속
public class Nonmember extends Member {...}
보안 등의 이유로 특정 멤버변수를 직렬화 대상에서 제외할 수 있다.
public class Member implements Serializable {
private String id;
private transient String password;
...
}
멤버 변수 중 객체를 타입으로 가지는 경우 모든 클래스가 Serializable 인터페이스를 구현해야 한다.
하나라도 없다면 직렬화가 불가능하다.
public class Member implements Serializable {
private String id;
private transient String password;
private Address address;
private Calendar registrationDate;
...
}
직렬화 가능한 클래스의 버전 관리 고유 번호
static final long 으로 선언
변수명 = serialVersionUID
값은 아무 값이나 지정해주면 된다. = 버전을 명시해주는 것임
public class Member implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private transient String password;
private Address address;
private Calendar registrationDate;
...
}
public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {
private static final long serialVersionUID = 362498820763181265L;
...
}