Interface Serializable
Serializable interface
에 선언된 메소드는 하나도 없다1. Serialize
즉, Serializable interface를 구현하면 JVM에서 해당 객체는 저장하거나 다른 서버로 전송할 수 있도록 해줌
1-2. 직렬화 조건
implements Serializable
한 객체는 직렬화할 수 있는 기본 조건transient
선언serialversionUID
: 클래스의 변경 여부를 파악하기 위한 유일 키로 직렬화할 때 UID와 역직렬화할 때 UID가 다를 경우 예외 발생 - 설정 권장1-3. 직렬화 방법
Serializable interface
를 구현한 클래스가 있을 때import java.io.Serializable;
public class MyClass implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
int n;
String str;
//int x;
}
java.io.ObjectOutputStream
를 사용하여 직렬화 진행static void write (MyClass mc) {
try (
ObjectOutputStream oos=new ObjectOutputStream (new FileOutputStream ("MyClass.dat"))
) {
oos.writeObject(mc);
//==========> 직렬화된 객체
} catch (IOException e) {
e.printStackTrace();
}
}
2. Deserialize
2-1. 역직렬화 방법
static MyClass read () {
MyClass mc=null;
try (
ObjectInputStream ois=new ObjectInputStream (new FileInputStream ("MyClass.dat"))
) {
mc=(MyClass) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return mc;
}
3. Serialize 사용 이유
Reference
https://gyoogle.dev/blog/computer-language/Java/Serialization.html
https://devlog-wjdrbs96.tistory.com/268
https://go-coding.tistory.com/101