枚举的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