1

我正在制作一个小游戏,现在正在处理序列化。我设法保存了battleground对象的当前状态,但似乎无法加载它。

这是我的方法,它给了我语法错误:

//Reads a Battleground object from disk.
private Object readFromFile() {
    FileInputStream saveFile = new FileInputStream("savegame.obj");
    ObjectInputStream restore = ObjectInputStream(saveFile);
    Object obj = restore.readObject();
    String name = (String) restore.readObject();
    restore.close();
}

我收到错误消息“找不到符号 - 方法 ObjectInputStream(java.io.FileInputStream)。在 Oracle Docs 中查找方法,方法中的参数应该属于那种类型。我已经导入了整个 java.io 库。任何输入?这是错误的方法吗?我需要一个加载游戏的方法。我的其他保存方法如下所示:

// Saves the Battleground object to disk.
private void saveToFile() {
    try{
        // Serialize data object to a file
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Savegame.obj"));
        out.writeObject(battleground);
        out.close();

        // Serialize data object to a byte array
        ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
        out = new ObjectOutputStream(bos) ;
        out.writeObject(battleground);
        out.close();

        // Get the bytes of the serialized object
        byte[] buf = bos.toByteArray();
    } catch (IOException e) {

    }
}
4

1 回答 1

4

你错过了new关键字

new ObjectInputStream(saveFile)

我也想知道你为什么打readObject()两次电话

Object obj = restore.readObject();
String name = (String) restore.readObject();

当你的saveToFile()代码只写一次时

out.writeObject(battleground);
out.close();
于 2013-05-09T11:27:14.993 回答