枚舉的優點和缺點


1、枚舉常量更簡單安全

沒有枚舉類之前常用靜態常量來表示,如
public static final MAN = 0;
public static final WOMAN = 1;
這樣的性別定義實際上是一個整型數據,完全可用來做加減運算。

或使用接口常量
interface Season{
int Spring = 0;
int Summer = 1;
int Autumn = 2;
int Winter = 3;
}

枚舉常量只需定義枚舉項,不需要定義枚舉值,而接口常量或類常量必須定義初始值。
2、枚舉常量穩定
普通接口或類常量實現:
public void decribe(int s){
if(s>0 && s<5){
switch(s){
case Season.Summer:
system.out.print("Summer");
break;
case Season.Winter:
system.out.print("Winter");
break;
default:
break;
}
}
}
枚舉常量實現:
public void decribe(Season s){
switch(s){
case Summer:
system.out.print("Summer");
break;
case Winter:
system.out.print("Winter");
break;
default:
break;
}
}
不用校驗已經限定了Season枚舉,如果想要輸入一個int類型是不通過的,這也是我們最看重枚舉的地方:在編譯期限定類型
不允許發生越界

3、枚舉具有內置方法
如果要列出所有季節常量,如何實現?接口或者類常量可以通過反射實現,但是實現起來會很繁瑣。如果用枚舉就很簡單
for(Season s: Season.values()){
system.out.print(s);
}
因為每個枚舉都是java.lang.Enum的子類,該類提供了如排序值ordinal,compareTo比較方法,簡化了常量訪問。

4、解決意義不明確,代碼更優雅。
a、調試程序時,想輸出性別男,結果輸出了個0,不是自己寫的完全不知道其意義,用枚舉類就完美解決了。
b、一些的程序里面,可能要用到成百上千的靜態常量,如果全寫在一個文件里面,容易造成命名混淆,程序讀起來也比較麻煩。

5、定義自己的類型。如完全可以用enum包含上面的兩種類型

6、枚舉常量的缺點:不可繼承,無法擴展,但是一般常量在構件時就定義完畢了,不需要擴展。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM