gpt4 book ai didi

java - 以数字开头的枚举

转载 作者:行者123 更新时间:2023-11-30 06:08:27 25 4
gpt4 key购买 nike

我有一个来自遗留系统的命令列表,我将其枚举为枚举。它们几乎都是 3 个大写字符 [A-Z],但其中两个是 3 位数字。

为了举例,假设它们是 {FOO, BAR, BAZ, QUX, 007, 999}。

我正在尝试找到一个不会让我或其他任何人感到头疼的命名约定。这些值可能会在 Java、JSON 和 Excel 之间进行转换。

这就是我现在所拥有的。

public enum SystemXCommands {
_007 ("007"),
_999 ("999"),
FOO,
BAR,
BAZ,
QUZ;

//The exact formatting of this command used in SystemX
String code;

SystemXCommands(String code) {
this.code = code;
}

SystemXCommands() {
this.code = this.name();
}
}

我想知道我是否应该担心前导下划线会导致格式转换问题。如果是这样,在这种情况下是否有更好的约定?

最佳答案

我不明白 Java 命名如何影响 JSON 序列化/反序列化。 JSON 中的标记(或“元素名称”,如果您愿意)是一个字符串,可以是“_007”以及“007”或“BAZ”。而且我不明白它如何导致 Excel 出现任何困难。

结论:您的名字正常,不必担心。

顺便说一句,以下方法存在潜在错误:

this.code = this.name();

假设您在几个月内进行重构并重命名枚举元素,例如 _007 --> CMD_007、FOO --> CMD_FOO。然后,在重命名后,使用 _007 的逻辑仍然有效,因为它的代码“007”在重构期间没有更改。但是重命名 FOO --> CMD_FOO 会导致代码从“FOO”更改为“CMD_FOO”。就像您已将 FOO("FOO") 更改为 CMD_FOO("CMD_FOO") 一样。这会破坏你的逻辑。最糟糕的是,您不会看到任何编译错误,并且稍后在运行时您会注意到这些问题。我建议您明确声明代码。

关于java - 以数字开头的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50769353/

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