SSISO Community

시소당

Serializable, Externalizable인터페이스 & transient

#Serializable  인터페이스
*  객체의  직렬화(저장)시  데이터의  저장과  복구가  자동으로  이루어짐.
*  implements  Serializable
  
*객체의  직렬화
1.  SerialObject  so  =  new  SerialObject();  //직렬화  객체  생성
2.  FileOutputStream  fos  =  new  FileOutputStream("file_name");  //파일스트림생성
3.  ObjectOutputStream  oos  =  new  ObjectOutputStream(fos);  //객체스트림으로  변환
4.  oos.writeObject(so);  //객체저장
5.  oos.close();  //스트림닫기
  
*객체의  역직렬화
1.  FileInputStream  fis  =  new  FileInputStream("file_name");  //파일스트림생성
2.  ObjectInputStream  ois  =  new  ObjectInputStream(fis);  //객체스트림으로  변환
3.  Object  obj  =  ois.readObject()  //객체읽기
4.  SerialObject  temp  =  (SerialObject)  obj;  //형복원
5.  ois.close()  //스트림닫기
  
#  Externalizable  인터페이스
-  사용자가  직접  객체를  직렬화하기  위해  사용
  
-  메서드
writeExternal():  기록하는  부분을  제어
readExternal():  읽어내는  부분을  제어
-  구현된  순으로  기록되며  기록된  순서대로  읽어야함.
  
  
#  transient  키워드
-  멤버변수를  직렬화의  대상에서  제외할때..
-  static키워드가  붙은  멤버변수는  자동으로  직렬화에서  제외됨.(중요)
  
  
#  직렬화가  불가능한  경우
1.  직렬화가  불가능한  객체를  포함한  경우
-  이벤트  어댑터,  이미지  필터,  AWT클래스,  beans,  Socket,  URLConnection
해결책:  직렬화가  불가능한  멤버변수에  transient키워드  사용
  
2.  상위클래스에서  Serializable를  구현하지  않은  경우
해결책:  상위클래스에도  implements  Serializable을  상속받는다.

출처  :  http://blog.empas.com/free7js/15349934

657 view

4.0 stars