シリアル化できないように見えるカスタムクラス(以下のコンストラクター)があります。
public ObjectNode(String name, int crackLevel,ArrayList<ObjectNode> filesOnComputer)
オブジェクトノードのArrayListからこのクラスのオブジェクトをシリアル化しようとするたびに、クラスキャスト例外が発生します。ArrayListをObjectNodeにキャストできません
コード-グローバル変数:
ArrayList<ObjectNode>a=new ArrayList<ObjectNode>();
File file = new File("/mnt/sdcard/","cheesepuff.txt");
関連コード:
public void serializeFile()
{
a.add(new ObjectNode("Level 1 Waterwall","ww1", 1, 5));
try {
Log.i("AAA","before serialize: "+a.toString());
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(a);
oos.flush();
oos.close();
Log.i("AAA","finished serialize");
}
catch(Exception e) {
Log.i("aaa","Exception during serialization: " + e);
System.exit(0);
}
}
public void deserializeFile()
{
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
ObjectNode obj=(ObjectNode)ois.readObject();
Log.i("aaa","obj: "+obj.ts());
//a.add((ObjectNode) ois.readObject());
ois.close();
Log.i("aaa","after serialize: " + a);
}
catch(Exception e) {
Log.i("aaa","Exception during deserialization: " +
e);
System.exit(0);
}
}
それをシリアル化するためにすべてを文字列にし、逆シリアル化後に文字列を実際に必要なものに戻すための最善のオプションはありますか?