Language/Java

[Java] 직렬화

ozofweird 2020. 7. 13. 16:39

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