transient 예약어.
① 멤버변수를 직렬화의 대상에서 제외할때 사용하는 키워드
② 멤버변수 앞에 transient를 명시
Ex) private transient String title;
int 는 0으로
Stirng이면 Null로!
Static 은 직렬화에서 제외된다.
- 공유메모리개념을 가지고 있기 때문에
직렬화의 조건.
non-static.
non-transient.
개체 직렬화할때 사용하는 것
① Serializable
② Externalizable - 인터페이스끼리 상속을 한다.
Externalizable은 시리얼라이즈에이블을 상속받는다.
객체 직렬화를 위해 Externalizable에 있는 메서드.
- writeExternal() // throws IOEception을 해줘야함!
- readExternal() // thorws IOException , ClassNotFoundException 도 필요!ㅋ
2개 구현 꼭 해줘야 하겠지?ㅋ
잠깐.
Serializable은 메소드를 포함하고 있지 않기때문에 구현해주지 않아도 되지만!!
요놈은 2개의 메소드가 있기때문에 구현해줘야합니다!ㅋ
Externalizable 구현.
사용자가 직접 객체직렬화를 위한 구현을 해야 한다.
직렬화가 불가능한것!
이벤트 아텝테, 이미지 필터, AWP클래스, 빈즈(jsp),소켓, URN...
상위클래스에서는 직렬화가 구현되지 않았을때 상위 클래스의 생성자에 매개변수가 있는경우.
-상위도 직렬화를 하던지, 매개변수가 있는 생성자가 없던지, transient 를 이용하던지 해서 조치를 취해줘야합니다.!
[출처] [본문스크랩] 객체 직렬화의 또다른 방법! - transient |작성자 아쭈