我有一个类似下面的枚举:-
enum Direction {
EAST,
WEST,
NORTH,
SOUTH
}
如果我values()
在 Direction 枚举上说,那么值的顺序会一直保持不变。我的意思是值的顺序将始终采用以下格式:
EAST,WEST,NORTH,SOUTH
或者订单可以随时更改。
我有一个类似下面的枚举:-
enum Direction {
EAST,
WEST,
NORTH,
SOUTH
}
如果我values()
在 Direction 枚举上说,那么值的顺序会一直保持不变。我的意思是值的顺序将始终采用以下格式:
EAST,WEST,NORTH,SOUTH
或者订单可以随时更改。
每种Enum
类型都有一个静态方法,该方法返回一个数组,该数组按照声明的顺序values
包含枚举类型的所有值。
此方法通常与 for-each 循环结合使用,以迭代枚举类型的值。
Java 7 规范文档链接: http ://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2
该方法的行为在Java 语言规范 #8.9.2中定义:
此外,如果 E 是枚举类型的名称,则该类型具有以下隐式声明的静态方法:
/**
* Returns an array containing the constants of this enum
* type, in the order they're declared. This method may be
* used to iterate over the constants as follows:
*
* for(E c : E.values())
* System.out.println(c);
*
* @return an array containing the constants of this enum
* type, in the order they're declared
*/
public static E[] values();
正如前面2个答案所说,顺序是声明的顺序。但是,依赖此顺序(或枚举的序数)并不是一个好习惯。如果有人对声明重新排序或在声明中间添加新元素,则代码的行为可能会发生意外变化。如果有固定的顺序,我会执行Comparable
.
Enums
用于将变量的值限制为枚举列表中唯一声明的值之一。
这些值是public static final
,即(该特定枚举类型的常量对象),其顺序对于将变量映射到这些对象非常重要。
values()
是 a static method of Enum
,它总是以相同的顺序返回值。