반응형

1. 클래스를 변경했을 때 역직렬화 과정에서 문제가 일어날 수 있는 경우

1) 인스턴스 변수를 삭제하는 경우

2) 인스턴스 변수의 유형을 변경하는 경우

3) transient로 지정하지 않았던 인스턴스 변수를 trasient로 지정하는 경우

4) 클래스를 상속 계층에서 위나 아래로 옮기는 경우

5) Serializable이었던 클래스를 Serializable이 아닌 클래스로 변경하는 경우

    (즉, 클래스 정의부에서 implements Serializable을 지워버리는 경우)

6) 인스턴스 변수를 정적 변수로 변경하는 경우

 

2. 클래스를 변경해도 역직렬화와 관련된 문제가 생기지 않는 경우

1) 클래스에 새로운 인스턴스 변수를 추가하는 경우

    (직렬화 당시에 없었던 변수에는 기본값이 대입된다.)

2) 상속 트리에 클래스를 추가하는 경우

3) 상속 트리에서 클래스를 제거하는 경우

4) 인스턴스 변수의 접근 레벨을 역직렬화 과정에서 변수에 값을 대입하는 데 문제가 없는 범위 내에서 변경하는 경우

5)  transient로 지정했던 인스턴스 변수를 transient가 아닌 변수로 변경하는 경우 (default 값이 저장된다.)

 

3. 직렬화와 관련된 중요 내용들

1) ObjectOutputStream은 직렬화된 객체를 저장하기 위해 쓰이는 클래스다.
2) writeObject()를 한 번 호출했을 때 객체 여러 개가 한꺼번에 저장될 수도 있다.
3) 객체를 역직렬화할 때 그 생성자는 실행되지 않는다.
4) 직렬화를 할 때, 그리고 텍스트 파일을 저장할 때 모두 예외가 던져질 수 있다.
5) BufferedWriter는 FileWriter에 연쇄시킬 수 있다.
6) 파일을 쓰는 과정과 읽는 과정에서 모두 버퍼를 사용할 수 있다.

반응형

'개발 및 관리 > Java' 카테고리의 다른 글

trasient 사용 예제  (0) 2013.01.31
패턴 직렬화, 패턴 복구  (0) 2013.01.31
StringTokenizer  (0) 2013.01.31
파일 입출력, 읽고 쓰기  (0) 2013.01.25
File, java.io.file 클래스  (0) 2013.01.25