枚舉的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
,那么可以通過(guò)ordinal
方法直接獲取枚舉項(xiàng)的序號(hào)晓猛。但這樣不夠直觀饿幅,而且不易維護(hù)(只能在尾部添加,不然會(huì)造成數(shù)據(jù)混亂)戒职。試想當(dāng)枚舉項(xiàng)越來(lái)越多的時(shí)候栗恩,想要知道枚舉項(xiàng)對(duì)應(yīng)的int
值是多少并不容易。
Enum
規(guī)范中談到ordinal
時(shí)這么寫(xiě)到:“大多數(shù)的程序員都不需要這個(gè)方法洪燥。它是設(shè)計(jì)成用于像EnumSet
和EnumMap
這種基于枚舉的通用數(shù)據(jù)結(jié)構(gòu)的磕秤。”除非你在編寫(xiě)的是這種數(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