【发布时间】:2012-09-22 03:08:20
【问题描述】:
我刚刚关注了Tutorial 进行序列化,我想知道为什么它不起作用。我有一个这样的游戏类:
import java.io.Serializable;
public class Game implements Serializable{
private static final long serialVersionUID = -4795536311274486893L;
protected int SHOT_SPEED;
protected int PLAYER_SPEED;
Player player;
ArrayList<SpaceObject> objects;
int level, score;
Dimension resolution;
and so on...
我的阅读器方法应该处理对象 IO,如下所示:
public boolean saveGame(Game game) {
try {
FileOutputStream fileOut = new FileOutputStream(defaultDataName+".ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(game);
out.close();
fileOut.close();
return true;
}
catch (IOException i) {
return false;
}
}
public Game loadGame() throws IOException {
if (readRawData(defaultDataName) == "") throw new IOException("Data was deleted");
Game game = null;
try {
FileInputStream fileIn = new FileInputStream(defaultDataName+".ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
game = (Game) in.readObject();
in.close();
fileIn.close();
}
catch (ClassNotFoundException e) {
throw new IOException("Class not Found: " + e.getMessage());
}
return game;
}
在我看来,我所做的一切都与教程中的完全一样,所以为什么不成功。 (它会抛出 ClassNotFoundError。感谢您的帮助!
【问题讨论】:
-
找不到哪个类?这是您删除的课程吗?
-
Player类,那么包含的每个Class都必须实现Serializable吗?
-
每个类都需要实现Serializable,包括任何外部类,但如果你得到
ClassNotFoundException,这意味着找不到类 -
当你捕捉到异常时,从不只需要
return false;。始终记录原因。否则你没有希望找出问题所在。 -
是的,我真的应该开始这样做,这对我以后真的很有帮助
标签: java object serialization deserialization