gpt4 book ai didi

java - 在java中序列化对象的层次结构

转载 作者:行者123 更新时间:2023-11-30 06:21:20 28 4
gpt4 key购买 nike

我有一个抽象类 Screen 和子类:GameScreenSpellScreenStatsScreen

游戏以这种方式运行:Renderer 类创建一个根

    Screen screenRoot = new GameScreen()

然后它可以自由地为自己添加屏幕,然后它可以为自己添加屏幕等等。因此形成了一个树状结构,每个屏幕都包含其子屏幕的列表。

现在我想知道是否可以对其执行序列化和反序列化 - 我想在同一层次结构中重新创建所有屏幕。

仅序列化 screenRoot 对象然后反序列化它就足够了吗(前提是我想保留整个屏幕树),还是我需要自己以某种方式遍历树?

你会如何序列化它?

附言该游戏适用于 Android,并使用 OpenGL ES 2.0。

最佳答案

对象层次结构并不妨碍使用 Java 序列化,因为后者可以处理任意对象图 - 是的,使用 Java 序列化序列化一个对象将序列化它引用的所有对象(除非该引用被标记为 transient )。假设这就是您想要的,序列化层次结构非常简单:

try (ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(filename)))) {
oos.write(rootScreen);
}

和阅读一样简单:

try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(filename)))) {
return (GameScreen) ois.readObject();
}

关于java - 在java中序列化对象的层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20684719/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com