这是 Serializing a vector 的后续内容
我正在尝试为我正在开发的游戏实现加载和保存。
我想保存一个 Maze
,其中包含 Entity
的 ArrayList
等属性。
实体是龙、英雄和元素的父类(super class)。所有这三种类型都可以同时包含在 vector 中。
使用“自动”序列化机制(将 implements Serialized
添加到 Maze
)可以保存除 ArrayList
之外的所有属性。
为什么会发生这种情况?
为了完整起见,我的代码如下。
package logic;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public final class LoadAndSave {
public static final transient boolean available = false;
public static final boolean serialize(Object obj) {
// Write to disk with FileOutputStream
FileOutputStream saveFile;
try {
saveFile = new FileOutputStream("game.sav");
} catch (FileNotFoundException e) {
return false;
}
// Write object with ObjectOutputStream
ObjectOutputStream objOut;
try {
objOut = new ObjectOutputStream(saveFile);
} catch (IOException e) {
//
return false;
}
// Write object out to disk
try {
objOut.writeObject(obj);
} catch (IOException e) {
return false;
}
return true;
}
public static final Object load() {
FileInputStream fileIn;
try {
fileIn = new FileInputStream("game.sav");
} catch (FileNotFoundException e1) {
return null;
}
// Read object using ObjectInputStream
ObjectInputStream objIn;
try {
objIn = new ObjectInputStream(fileIn);
} catch (IOException e) {
return null;
}
// Read an object
Object obj;
try {
obj = objIn.readObject();
} catch (IOException e) {
return null;
} catch (ClassNotFoundException e) {
return null;
}
return obj;
}
}
最佳答案
Entity
也可以序列化吗? (您提到只有 Maze 是可序列化的)。
并确保列表未定义为 transient 或静态,否则序列化机制将跳过它。
关于java - 无法序列化 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367916/