java - 在 switch case 中使用枚举的序号而不是使用枚举有什么重要的理由吗?

标签 java enums ordinal ordinals

我最近遇到了以下示例:

CommandKey key = command.getKey();
    switch(key.ordinal()) {
    case 1:
        return IncidentType.StatusChange;
    case 2:
        return IncidentType.Notification;
    ...

键是一个枚举。

写这本书的人有没有理由这样做,因为这似乎使代码变得不必要地脆弱;更改枚举列表的值可能会破坏映射逻辑并导致错误的返回类型。
我能看到的唯一可能的好处是轻微的性能提升,在具有高吞吐量的服务器的上下文中可以证明采用的方法是合理的。

任何可能的性能提升是否值得,还有我不知道的任何其他好处吗?

最佳答案

有充分的理由反对它。序号可以随时更改,甚至不会破坏二进制兼容性。名字根本不能这么改。

更好的解决方案是将返回值构建到 Enum 本身。

关于java - 在 switch case 中使用枚举的序号而不是使用枚举有什么重要的理由吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49026595/

相关文章:

php - 在 Laravels Eloquent 中获取枚举选项

c# - Console.WriteLine(Enum.Value) 在 C# 和 VB.Net 中给出不同的输出

python - 使用循环动态查找序数 : find th - st - nd - rd

Java 等同于 Python 的 toordinal()?

java - 类卡不会转换为字符串

java - 如何引用 Java 的 KeyStroke.getKeyStroke 的 String 版本中的 mac 命令键?

Java 原始数据类型数组

swift - 在 Swift 中,给定一个枚举变量,我如何判断它是哪种情况?

java - 在 JScrollPane 中重新绘制 JPanel

r - clmm后如何使用texreg(我想提取随机效应成分)