Serializable

C:\DATA\Java2\01Dos\15Serializable>java ExSaveMain
null
 -- Press any key to exit (Input "c" to continue) --

C:\DATA\Java2\01Dos\15Serializable>java ExLoadMain
SaveTest Message
 -- Press any key to exit (Input "c" to continue) --

Serializable で Object をセーブ/ロードします。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして ExBean.java の名前で保存して下さい。
    以前説明したものと同じですが Serializable を implements しています。
    //★ ExBean の Serializable Test    前田 稔
    import java.io.Serializable;
    
    public class ExBean implements Serializable
    {   private String id;
        public void setId(String id) { this.id = id; } 
        public String getId() { return this.id; }
    }
    
  2. ExBean に id を設定してセーブする Main Program です。
    メモ帳などでタイプして ExSaveMain.java の名前で保存して下さい。
    //★ ExBean Serializable Save    前田 稔
    import java.io.FileOutputStream;
    import java.io.ObjectOutputStream;
    import java.io.FileInputStream;
    import java.io.ObjectInputStream;
    
    public class ExSaveMain
    {   public static void main(String args[])
        {   ExBean  bean= new ExBean();
    
            System.out.println(bean.getId());
            bean.setId("SaveTest Message");
    
            // オブジェクトをファイルに保存
            try
            {   FileOutputStream outFile = new FileOutputStream("score.txt");
                ObjectOutputStream out = new ObjectOutputStream(outFile);
                out.writeObject(bean);
                out.close();
                outFile.close();
            }
            catch(Exception ex)
            {   ex.printStackTrace();   }
        }
    }
    
  3. セーブした Object をロードする Main Program です。
    メモ帳などでタイプして ExLoadMain.java の名前で保存して下さい。
    //★ ExBean Serializable Load の確認    前田 稔
    import java.io.FileOutputStream;
    import java.io.ObjectOutputStream;
    import java.io.FileInputStream;
    import java.io.ObjectInputStream;
    
    public class ExLoadMain
    {   public static void main(String args[])
        {   ExBean  bean= null;
    
            // オブジェクトの読み込み
            try
            {   FileInputStream inFile = new FileInputStream("score.txt");
                ObjectInputStream in = new ObjectInputStream(inFile);
                bean = (ExBean)in.readObject();
                in.close();
                inFile.close();
            }
            catch(Exception ex)
            {   ex.printStackTrace();   }
    
            System.out.println(bean.getId());
        }
    }
    
  4. ExBean.java と ExSaveMain.java と ExLoadMain.java をコンパイルして下さい。
    最初に ExSaveMain.class を実行します。
    id が設定されていないので null が表示されます。
    null
  5. ExSaveMain.class を実行してから ExLoadMain.class を実行します。
    ExSaveMain で設定したときの Class の状態が再現されて、id には "SaveTest Message" が格納されています。
    このことを「Beanを永続化する」などと言います。
    null では無く "SaveTest Message" が表示されたら完成です。
    SaveTest Message

プログラムの説明

  1. Beans はサーブレットやJSPで Serializable と組み合わせて良く使われます。
    Beans に Serializable を implements すると、Object をセーブ/ロードすることが出来るようになります。
    この事を指して直列化(あるいは整列化)と呼び、ファイルへ保存することを永続化などと呼んでいるようです。
    ExBean.java では Serializable を implements して下さい。
        import java.io.Serializable;
    
        public class ExBean implements Serializable
        {   ・・・
        
    import を省略して、次のように書いても同じです。
        public class ExBean implements java.io.Serializable
        {   ・・・
        
  2. ExSaveMain.java では new ExBean() で生成して bean.getId() で印字します。
    この段階では id が設定されていないので null が印字されます。
    次に id に "SaveTest Message" を設定して「out.writeObject(bean);」で Object を "score.txt" にセーブします。
        public class ExSaveMain
        {   public static void main(String args[])
            {   ExBean  bean= new ExBean();
    
                System.out.println(bean.getId());
                bean.setId("SaveTest Message");
    
                // オブジェクトをファイルに保存
                    ・・・
                    out.writeObject(bean);
        
  3. 次に ExLoadMain.java を実行します。
    "score.txt" から「bean = (ExBean)in.readObject();」で Object をロードして bean.getId() で印字します。
    ExSaveMain.java で設定した "SaveTest Message" が印字されます。
        public class ExLoadMain
        {   public static void main(String args[])
            {   ExBean  bean= null;
    
                // オブジェクトの読み込み
                    ・・・
                    bean = (ExBean)in.readObject();
    
                System.out.println(bean.getId());
        
  4. サーブレットやJSPで Serializable と組み合わせるプログラムは「Java Game Program/サーブレット&JSP」を参照して下さい。
    基本は同じですが、少し様子が違うようです。

超初心者のプログラム入門(Java2)