Java中的列舉(enum)知多少
阿新 • • 發佈:2018-12-26
1、命名規範:列舉名稱,首字母大寫,駝峰標識;其列舉值,全大寫,下劃線分割;
4、定義列舉類時,如果只有列舉值,則最後一個列舉值後可以沒有逗號或分號;如果有自定義方法,則最後一個列舉值與後續程式碼之間要用分號隔開,不能使用逗號或空格;
2、命名規範參考:java.lang.Character的UnicodeScript列舉示例;
3、自定義列舉類,程式碼參考:
public enum Color {
RED("紅色"),
GREEN("綠色"),
YELLOW("黃色");
//自定義欄位
private String desc;
//構造方法
private Color(String desc) {
this.desc = desc;
}
//一般方法
public String getDesc() {
return this.desc;
}
}
4、定義列舉類時,如果只有列舉值,則最後一個列舉值後可以沒有逗號或分號;如果有自定義方法,則最後一個列舉值與後續程式碼之間要用分號隔開,不能使用逗號或空格;
5、列舉可以實現介面,程式碼參考:java.net.StandardProtocolFamily implements ProtocolFamily;
6、比較列舉時,要使用equal方法,不能使用==方法比較,否則在分散式環境下會出錯;(enum的值是在執行期生成,在 cluster 環境下,每個虛擬機器都會構造出一個同義的列舉物件。因此使用==方法比較時,其列舉值一定不相等,因為這不是同一個物件例項。
7、String字串轉換為列舉
有些時候(歷史問題、舊的介面等),會傳輸String型別,而不是列舉類,
需要內部將String轉換為列舉,方法如下(以上文中的顏色為例):
public static String getDescOfColor(String colorStr) {
try {
Color entry = Enum.valueOf(Color.class, colorStr);
return entry.getDesc();
} catch (Exception e) {
return "未知顏色["+colorStr+"]";
}
}