Java Gold合格への道 ~Java I/O・オブジェクトの直列化と復元~
スポンサーリンク
こんにちは。たろすです。
今回はJava I/Oのオブジェクトの直列化と復元について説明します。
直列化はなんのために行う?
そもそも直列化とはなにかというと、オブジェクトをバイト列として一列に並べることです。
そうすることによって、アプリケーションが終了してもオブジェクトを保存しておいて、再度アプリケーションが起動したときにオブジェクトを復元できます。
また、直列化されたオブジェクトはネットワーク上で送信することもできます。
直列化
直列化はwriteObjectメソッドによって行います。
直列化したいオブジェクトにはSerializableインタフェースを実装します。
public class Data implements Serializable { private int id; private int num; public Data(int id, int num) { this.id = id; this.num = num; } public String toString() { return id + ":" + num; } // setter & getter }
Data outData = new Data(1, 5); try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("sample.ser"))) { oos.writeObject(outData); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
復元
復元はreadObjectメソッドを使って行います。
戻り値はオブジェクト型なので元の型にキャストします。
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("sample.ser"))) { Data inData = (Data) ois.readObject(); System.out.println(inData); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }
1:5