2009年10月8日木曜日

シリアライズのテストプログラム

シリアライズをして復元するというようなプログラムをテストで
作ってみました。

いままではフレームワークで勝手にシリアライズしてくれるような部分で意識していなかった
部分だったのだけど、ちょっと自前で書いてみました。

Serializable なクラスをもつSerializable を作って
byte[]に格納した後に、そこからオブジェクトに復元してみる
というのを確かめたサンプルのソースコードです。

package SerializeTest;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import javax.xml.parsers.DocumentBuilder;

import org.w3c.dom.Document;

public class Main {

 /**
  * @param args
  * @throws IOException 
  * @throws ClassNotFoundException 
  */
 public static void main(String[] args) throws IOException, ClassNotFoundException {
  classA  test = new classA();
//  DocumentBuilder docbu = DocumentBuilder.get;
  test.setLoginInfo(new LoginInfo("useree","passhhh"));
  test.setVal1("かきくけこ");
  test.setVal2("あいうえお");
  System.out.println(test.toString());
  
  ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
  ObjectOutputStream p = new ObjectOutputStream(baos);

  p.writeObject(test);
  p.writeObject("String");

  p.flush();
  byte [] bit = baos.toByteArray();
  baos.close();
    //
  ByteArrayInputStream bais = new ByteArrayInputStream(bit); 
  ObjectInputStream ois = new ObjectInputStream(bais);
  classA cla = (classA ) ois.readObject();
  String str = (String ) ois.readObject();
  System.out.println(cla.toString());
  System.out.println(str);
 }

}
 

============================
package SerializeTest;

import java.io.Serializable;

public class classA implements Serializable {
 /**
  * 
  */
 private static final long serialVersionUID = -345225844394172659L;
 LoginInfo loginInfo;
 String val1 ;
 String val2 ;
 
 public LoginInfo getLoginInfo() {
  return loginInfo;
 }

 public void setLoginInfo(LoginInfo loginInfo) {
  this.loginInfo = loginInfo;
 }

 public String getVal1() {
  return val1;
 }

 public void setVal1(String val1) {
  this.val1 = val1;
 }

 public String getVal2() {
  return val2;
 }

 public void setVal2(String val2) {
  this.val2 = val2;
 }

 public String toString(){
  return loginInfo.getUserName()
       +"/"+loginInfo.getPassword()
  +"/"+val1+"/"+val2;
 }
 
}

===============================
package SerializeTest;

import java.io.Serializable;

public class LoginInfo implements Serializable {
 /**
  * 
  */
 private static final long serialVersionUID = -8712859729005134670L;
 private String userName;
 private String password;
 public LoginInfo(String string, String string2) {
  userName =string;
  password=string2;
 }
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }

}
 



0 件のコメント: