Language/Java
[Java] 직렬화
ozofweird
2020. 7. 13. 16:39
1. 직렬화
인스턴스의 상태를 그대로 저장하거나 네트워크로 전송하고 다시 복원하는 방식이다. ObjectInputStream, ObjectOutputStream 보조 스트림을 사용한다. 인스턴스 내용이 외부로 유출되는 것이므로 객체의 직렬화 가능 여부를 명시하고 구현 코드가 없는 mark interface한다.
// 직렬화하겠다는 의도로 인터페이스 사용
class Person implements Serializable {
String name;
String job;
}
※ 역직렬화 과정에서 안정적인 다운캐스팅을 수행할 때 EOFException 오류에 대한 처리를 하지 못한다.
2. transient
trainsient 키워드를 통해 직렬화를 수행을 방지할 수 있다. 직렬화할 수 없는 socket에 사용한다.
3. Externalizable
구현할 수 있는 메서드가 존재한다(writeExternal, readExternal). readObject, writeObject에 대한 직접 읽고 쓰는 로직 구현이 가능하다.
728x90