Java。有没有办法只使用一个 java 文件(class...)来 save/load 整个 game/app?

Java. Is there any way to save/load whole game/app using only one java file(class...)?

我不知道 java 中是否有任何方法可以仅使用一个脚本(java 文件,class.. .)?

例如,如果我在很多 java 文件中创建许多整数和字符串,有没有办法只使用一个脚本来保存它们。当我关闭 game/app (System.exit(1);) 并且当我返回游戏时它会自行加载(我不会丢失我的统计数据。)。

有什么办法吗?

您不应将游戏数据保存到 Java 文件中。这没有道理。 Java 文件用于存储 Java 源代码,而不是您的游戏数据。

你应该把你的游戏数据写到其他文件中,然后在程序启动时读取它。

你基本上使用 ObjectOutputStreamObjectInputStream 来做到这一点。

就在用户关闭程序之前,您创建了一个新的 ObjectOutputStream:

FileOutputStream fos = new FileOutputStream("The/Path/That/You/Want/The/Data/File/To/be");
ObjectOutputStream stream = new ObjectOutputStream(fos);

然后将所有游戏数据(您的整数和字符串)放入一个实现 Serializable 的 POJO 中。之后,将这个POJO写入那个文件。

这是 POJO class:

public class GameData implements Serializable {
    private int int1, int2, int3;
    private String s1, s2, s3;

    // getters for the fields

    public GameData(int int1, int int2, int int3, String s1, String s2, String s3) {
        this.int1 = int1;
        this.int2 = int2;
        this.int3 = int3;
        this.s1 = s1;
        this.s2 = s2;
        this.s2 = s3;
    }
}

你这样保存数据:

GameData data = new GameData(someInt1, someInt2, someInt3, someStr1, someStr2, someStr3);
stream.writeObject(data);

当你想读回数据时,只需创建一个 FileInputStream 和一个 ObjectInputStream 并将读取的对象转换为 GameData 即可取回所有整数和字符串!