[Java] 직렬화

2020. 7. 13. 16:39Language/Java

1. 직렬화

인스턴스의 상태를 그대로 저장하거나 네트워크로 전송하고 다시 복원하는 방식이다. ObjectInputStream, ObjectOutputStream 보조 스트림을 사용한다. 인스턴스 내용이 외부로 유출되는 것이므로 객체의 직렬화 가능 여부를 명시하고 구현 코드가 없는 mark interface한다.

// 직렬화하겠다는 의도로 인터페이스 사용
class Person implements Serializable {

	String name;
	String job;

}

SerializationTest
구현 화면

※ 역직렬화 과정에서 안정적인 다운캐스팅을 수행할 때 EOFException 오류에 대한 처리를 하지 못한다.

 

 

 

2. transient

trainsient 키워드를 통해 직렬화를 수행을 방지할 수 있다. 직렬화할 수 없는 socket에 사용한다.

SerializationTest
구현 화면

 

 

 

3. Externalizable

구현할 수 있는 메서드가 존재한다(writeExternal, readExternal). readObject, writeObject에 대한 직접 읽고 쓰는 로직 구현이 가능하다.

SerializationTest


[참고] github.com/ozofweird/Java_Practice

728x90

'Language > Java' 카테고리의 다른 글

[Java] Process, Thread  (0) 2020.07.13
[Java] 그 외 입출력 클래스와 데코레이터 패턴  (0) 2020.07.13
[Java] 보조 스트림  (0) 2020.07.13
[Java] 문자 단위 스트림  (0) 2020.07.13