enum.values() - 是返回枚举确定性的顺序

2022-08-31 09:51:33

我有一个枚举:SOME_ENUM

public enum SOME_ENUM {
  EN_ONE,
  EN_TWO,
  EN_THREE;
}

将始终按枚举声明的顺序返回枚举:?这是一个规则,还是不能保证在下一个JDK版本中不会更改?SOME_ENUM.values()EN_ONE, EN_TWO, EN_THREE


答案 1

Java 语言规范使用以下显式语言:

@return一个包含此枚举类型常量的数组,按照它们声明的顺序 [Source]

因此,是的,它们将按申报顺序返回。值得注意的是,如果有人更改了类,顺序可能会随着时间的推移而改变,因此请非常小心如何使用它。


答案 2

是的,保证按该顺序返回它们。

但是,您应该避免依赖它和值,因为它可以在插入新项目后发生变化。ordinal()