枚举的ordinal
方法返回枚举项在枚举类中出现的序号
如下例子:
public enum Light {
// 红灯
RED,
//绿灯
GREEN,
// 黄灯
YELLOW;
}
public static void main(String[] args) {
System.out.println(Light.GREEN.ordinal());
}
输出结果是:1
类似数组的下标。
很多业务需求中,枚举是与int
相关联的,如果你不在枚举类中规定int
,那么可以通过ordinal
方法直接获取枚举项的序号。但这样不够直观,而且不易维护(只能在尾部添加,不然会造成数据混乱)。试想当枚举项越来越多的时候,想要知道枚举项对应的int
值是多少并不容易。
Enum
规范中谈到ordinal
时这么写到:“大多数的程序员都不需要这个方法。它是设计成用于像EnumSet
和EnumMap
这种基于枚举的通用数据结构的。”除非你在编写的是这种数据结构,否则最好完全避免使用ordinal
方法。
所以尽量避免使用ordinal
枚举的一般使用
public enum Light {
// 红灯
RED(0),
//绿灯
GREEN(1),
// 黄灯
YELLOW(2);
private Integer id;
Light(Integer id) {
this.id = id;
}
public Integer getId(){
return this.id;
}
}
public static void main(String[] args) {
System.out.println(Light.GREEN.id);
}
输出结果是:1
网友评论