枚舉ordinal方法

枚舉的ordinal方法返回枚舉項(xiàng)在枚舉類中出現(xiàn)的序號(hào)

如下例子:

public enum Light {
       // 紅燈
       RED, 
       //綠燈  
       GREEN, 
       // 黃燈
       YELLOW;
}

public static void main(String[] args) {
    System.out.println(Light.GREEN.ordinal());
}

輸出結(jié)果是:1

類似數(shù)組的下標(biāo)。

很多業(yè)務(wù)需求中,枚舉是與int相關(guān)聯(lián)的,如果你不在枚舉類中規(guī)定int,那么可以通過ordinal方法直接獲取枚舉項(xiàng)的序號(hào)。但這樣不夠直觀,而且不易維護(hù)(只能在尾部添加,不然會(huì)造成數(shù)據(jù)混亂)。試想當(dāng)枚舉項(xiàng)越來越多的時(shí)候,想要知道枚舉項(xiàng)對應(yīng)的int值是多少并不容易。

Enum規(guī)范中談到ordinal時(shí)這么寫到:“大多數(shù)的程序員都不需要這個(gè)方法。它是設(shè)計(jì)成用于像EnumSetEnumMap這種基于枚舉的通用數(shù)據(jù)結(jié)構(gòu)的?!背悄阍诰帉懙氖沁@種數(shù)據(jù)結(jié)構(gòu),否則最好完全避免使用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);
    }

輸出結(jié)果是:1

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容