【发布时间】:2024-04-21 12:10:02
【问题描述】:
我目前正在编写一个带有点对点“网络协议”的 java 游戏。这意味着我通过网络将对象发送到其他游戏。
随着开发的进行,我会添加和删除东西。我改变了游戏,它最终变得与旧版本不兼容。
现在我想将当前版本号存储在我通过网络发送的协议对象中,每次我进行更改时,我都可以更新版本,从而在代码中检测两个游戏实例是否兼容。
我的问题是:java中保存版本号的标准类是什么?
我搜索可以为我提供主要、次要和补丁级别版本、可比较等的东西。
这样的课程很难用谷歌搜索..
【问题讨论】:
-
不完全确定,但您可以使用
public static final int version字段。 -
实现
java.io.Serializable并创建字段 generatedGUID。当您更改课程时,guid 应该更改 -
当您说您通过网络协议发送对象时,您的意思是: 1. 您使用类似
ObjectOutputStream的东西通过网络连接发送数据? 2. 您正在创建自己的对象以通过网络发送?如果是这种情况,您正在创建自己的应用层网络通信标准,并在其中定义标准。当人们检查版本号时,单个整数的传输就足够了,不需要特殊的对象。如果您的游戏要求特定对象担任此角色,请创建您自己的对象。 -
是的,就像你描述的那样。毫无疑问,一个简单的整数来存储版本就可以了。但它的 Java 和它的一个学校项目。我想用一个不错的版本对象来制作它。这是一些非常基本的东西,而且很容易实现,所以我很确定核心中一定有类似的东西。
-
嗯,在我看来,明确地必须传输一个代表版本的整个对象是糟糕的程序设计的标志。版本号应该是内置消息包或初始连接握手期间。但是,除此之外,通过序列化(本质上是当对象准备好传输/存储时 java 正在为您做的事情),java 自动为每个类提供一个“版本”,存储为字段
serialVersionUID。你能不能简单地用每个不兼容的游戏版本更改 UID 并在读取对象时检测到ClassCastException?
标签: java version standard-library