枚举ordinal方法

2019-10-24  本文已影响0人  帮我的鸵鸟盖个章

枚举的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时这么写到:“大多数的程序员都不需要这个方法。它是设计成用于像EnumSetEnumMap这种基于枚举的通用数据结构的。”除非你在编写的是这种数据结构,否则最好完全避免使用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

上一篇下一篇

猜你喜欢

热点阅读