gpt4 book ai didi

java - Java 中用于标识网络消息的连续常量

转载 作者:行者123 更新时间:2023-12-01 15:02:30 27 4
gpt4 key购买 nike

我这里有一个 Java 问题。我有很多常量,它们是连续的常量整数,当前定义如下:

interface Flags {
static final short A = 0;
static final short B = A + 1;
static final short FIRST_USER_FLAG = B + 1;
}

你们中的许多人现在会推荐我使用 Enum。问题是,我需要不止一个地方有这些标志。所以它会是这样的:

interface CustomFlags {
static final short USER_A = Flags.FIRST_USER_FLAG + 1;
static final short USER_B = USER_A + 1;
}

您在此处看到的代码在网络两侧也必须相同,包括服务器代码和客户端代码。它们之间的每条消息都定义了它的标志,通过这个标志,网络创建消息对象,并用这个标志注册。这似乎不是最好的方法,但我想不出更好的方法。问题是,网络代码有自己的标志和消息,它们执行一些基本的身份验证和握手。然后必须有由使用网络的代码定义的消息(及其标志)。

我的问题是,如何使其更具可维护性和可读性?另外,如果有人知道发送和重新创建消息的更好方法(我使用 TCP 和 UDP,具体取决于消息),我将非常感激听到它。

如果有什么我没有解释的地方,请告诉我,我会添加。

PS:抱歉我的英语不好,因为我不是母语人士。

最佳答案

我会保持原样。这是定义协议(protocol)常量的常用技术。如果对等点不是 Java,我可能会进一步“反工程”,直接定义名称及其值,而不用担心算术。您不希望它很容易更改,您实际上希望它不可能更改,这样就不会出现无意的协议(protocol)不兼容性。枚举适用于您对名称和类型安全更感兴趣的情况不太关心实际值、序数等。

关于java - Java 中用于标识网络消息的连续常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13439707/

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