このメソッドを呼び出して、シリアル化されたオブジェクトを取得したい:
ArrayList<String> myArrayList = (ArrayList<String>) getSerializedObject(ArrayList.class, "arraylist.ser");
指定したファイル (arraylist.ser) が存在しない場合、または渡したクラスと一致しない場合は、そのクラスの新しいインスタンスを返したいと考えています。
private Object getSerializedObject(Class<?> c, String filename) {
Object serObject = null;
try {
if (new File(filename).exists()) {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename));
Object tempObj = in.readObject();
if (tempObj.getClass().equals(c)) {
System.out.println("Loading "+filename);
serObject = tempObj;
}
in.close();
}
}
catch (FileNotFoundException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
catch (ClassNotFoundException e) { e.printStackTrace(); }
if (serObject != null) {
return serObject;
}
else {
// return new instance of Class c here
}
}