직렬화란
가상머신의 메모리에 로딩되는 클래스를 바이트 형태로 변환시켜 저장하는 것을 말한다.
이렇게 함으로써 원격서버로 변환된 파일을 보내 역직렬화의 과정을 통해 다시 클래스를 사용할 수 있게 된다.
1)직렬화시킬 클래스
주의) 직렬화시킬 클래스는 반드시 Serializable 인터페이스를 implements해야만 한다. 따로 구현해야할 메서드는 없다.
import java.io.Serializable;
public class Beans implements Serializable{
private String a;
private String b;
public Beans(String a, String b){
this.a=a;
this.b=b;
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public String toString(){
return "a : "+a+"\nb : "+b;
}
}
2. 직렬화시키는 클래스
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) throws FileNotFoundException, IOException {
Beans bean = new Beans("aaa", "20");
Beans bean2 = new Beans("bbb", "50");
ArrayList<Beans> list = new ArrayList<Beans>();
list.add(bean);
list.add(bean2);
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("beans.dat"));
out.writeObject(list);
out.close();
}
}
3. 역직렬화하는 클래스
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.ArrayList;
public class Test2 {
public static void main(String args[]) throws Exception {
ObjectInputStream in= new ObjectInputStream(new FileInputStream("beans.dat"));
ArrayList<Beans> serial = (ArrayList<Beans>)in.readObject();
for(Beans b : serial)
System.out.println(b);
}
}