개발 등/JAVA

JAVA 직렬화( Serialization)의 예

darkhorizon 2010. 7. 29. 16:03
728x90
반응형

직렬화란
가상머신의 메모리에 로딩되는 클래스를 바이트 형태로 변환시켜 저장하는 것을 말한다.
이렇게 함으로써 원격서버로 변환된 파일을 보내 역직렬화의 과정을 통해 다시 클래스를 사용할 수 있게 된다.

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);
   }
}

728x90