java - 象棋游戏的序列化

标签 java serialization deserialization chess

大家好,
               用JAVA ...我正在写国际象棋代码。在该国际象棋代码中,GAME是主要类。它由BOARD组成,而BOARD则由KING,QUEEN,BISHOP,KNIGHT,ROOK组成。这些类KING,QUEEN,BISHOP,KNIGHT,ROOK扩展了零件。因此,现在我想保存游戏并在以后玩。我已经阅读了序列化的概念,但是我不知道如何实现它,我应该在哪个类上编写“ Implements Serializable”。我的代码中也包含静态变量。
序列化之前将静态变量处理为普通变量,反序列化后将其复制回静态变量有帮助吗?谢谢...

最佳答案

要序列化Java中的对象,必须确保:
-此类中的每个字段都是可序列化的
-如果您的任何字段都不可序列化,则必须将其标记为瞬态。序列化/反序列化后,这些字段将获得默认值。

回答您的问题。您要做的是将您的Game对象保存到数据流中并将其存储在某个位置,然后过一段时间再加载它。为此,您需要使Game类实现Serializable。确保组成Game的每个类也实现可序列化(例如King,Queen等)。

将静态上下文保存到局部变量可能可行,但这不是一个很好的解决方案。尝试重新考虑您的Game类实际做什么。每个Game对象都应该是游戏的独立状态,无需在游戏之间共享静态上下文。

About object serialization

Serialization of static variables

关于java - 象棋游戏的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40057646/

相关文章:

c# - 未反序列化ElasticSearch NEST GET响应

c# - 克隆 Linq 对象错误 "Object graph for type ' TestLinq.PersonAddress' 包含循环,如果禁用引用跟踪则无法序列化。”

c# - 反序列化具有字符串属性的 bool 元素

java - Java 是否有内置的静态反序列化能力或标准模式?

Java lambda流合并模型中的参数

c++ - boost::serialization::access 可以在运行时/以编程方式动态更改版本吗?

json - 使用 Serde 反序列化跳过序列中的无效元素

java - jOOQ - 如何使用 Postgres 表中的数组更新 jsonb 列以避免 SQLDialectNotSupportedException

java - hibernate条件查询创建多个sql

java - 如何在 rails、ruby 或使用 node 中创建视频、音频聊天系统