1. 程式人生 > >Java中的列舉(enum)知多少

Java中的列舉(enum)知多少

1、命名規範:列舉名稱,首字母大寫,駝峰標識;其列舉值,全大寫,下劃線分割;

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+"]";
  }
}