シリアライズとは、オブジェクトの状態、メタデータ(クラス名、属性の名前など)
をバイナリーフォーマットで保存する。その目的は以下の通り。
Java.io.Serializable
import java.io.Serializable;
public class Person implements Serializable {
// etc
}
package com.tedneward;
public class Person implements Serializable {
public Person(String fn, String ln, int a) {
this.firstNmae = fn;
this.lastName = ln;
this.age = a;
}
public String getFirstName() {
return firstNmae;
}
public String getlastName() {
return lastName;
}
pubic int getAge() {
return age;
}
public Person getSpouse() {
return spouse;
}
public void setFirstName(String value) {
firstName = value;
}
public void setLastName(String value) {
lastName = value;
}
public void setAge(int value) {
age = value;
}
public void(Person value) {
spouse = value;
}
public String toString() {
return "Person: FirstName=" + firstName + " LastName=" + lastName + "age=" + age + " Spuse=" + spouse.getName()";
}
private String firstName;
private String lastName;
private int age;
private Person spouse;
}
オブジェクトのデシリアライズ
public class SerTest {
@Test
public void testSeriarizeToDisk() {
try {
Person ted = new Person("Ted", "Neward", 39);
Person charl =new Person("Charotte", "Neward", 38);
ted.setSpouse(charl);
char.setSpouse(ted);
FileOutputStream fos = new FileOutputStream("tempdata.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(ted);
oos.close();
}
catch (Exception e) {
fail("Exception occurred: " + e.toString());
}
try {
FileInputStream fis = new FileInputStream("temdata.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
Person ted = (Person) ois.readObject();
ois.close();
assertEquals(ted.getFirstName(), "Ted");
assertEquals(ted.getSpouse().getFirstName(), "Charlotte");
new File("temdata.ser").delete();
}
catch (Exception e) {
fail("Exception occurred: " + e.toString());
}
}
serialVersionUID
> serialver [className]