Java オブジェクトをシリアライズする方法

Java方法
import java.io.*;
public class Cat implements Serializable {
private String name;
public Cat () {
this.name = “new cat”;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
Cat cat = new Cat();
try {
FileOutputStream fos = new FileOutputStream(“catDemo.out”);
ObjectOutputStream oos = new ObjectOutputStream(fos);
System.out.println(” 1> ” + cat.getName());
cat.setName(“My Cat”);
oos.writeObject(cat);
oos.close();
} catch (Exception ex) { ex.printStackTrace(); }
try {
FileInputStream fis = new FileInputStream(“catDemo.out”);
ObjectInputStream ois = new ObjectInputStream(fis);
cat = (Cat) ois.readObject();
System.out.println(” 2> ” + cat.getName());
ois.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
説明
java.io.Serializable インターフェイスは普段のプログラミングであまり意識しない場合が多いと思いますが JavaBeans や EJB を扱うウェブアプリケーションを作成する場合などには Serializable インターフェイスの実装に関する知識は必要だと思います。

Tomcat では再起動やウェブアプリケーションのリロードの際にはセッションの直列化と復元を行っています。 例えば Tomcat 上のあるウェブアプリケーションにブラウザからアクセスしてから Tomcat の再起動を行い、再度同じウェブアプリケーションにアクセスしてもセッションは維持されたままです。 HttpSession インターフェイスは Serializable ではありませんが Tomcat の実装においてはコンクリートクラスでは Serializable が実装されており、緊急時に直列化により保存することが可能なように作られています。 このような機能はおそらくアプリケーションサーバに内蔵されている大抵のサーブレットコンテナが備えている機能だと思います。 しかしこのような機能があってもセッションに格納する属性が正しく Serializable を実装していない場合にはセッションは正しく復元されません。