列舉型別Enum的含義分析
阿新 • • 發佈:2019-02-01
列舉型別是一種基本資料型別而不是構造資料型別,從jdk1.5才有的新型別,一般用來做全域性常量。
特性:
1.它不能有public的建構函式,這樣做可以保證客戶程式碼沒有辦法新建一個enum的例項,可用來寫單例模式。
2.所有列舉值都是public , static , final的。注意這一點只是針對於列舉值,我們可以和在普通類裡面定義
變數一樣定義其它任何型別的非列舉變數,這些變數可以用任何你想用的修飾符。
3.Enum覆載了了toString方法,因此我們如果呼叫Color.Blue.toString()預設返回字串”Blue”.
用法:
1:字串常量(也是最簡潔的單例模式)://定義
public enum EnumKey{
MESSAGE_UPDATE,MESSAGE_DELETE,MESSAGE_ADD;
}
//使用
EnumKey.MESSAGE_ADD.toString();
2:整型常量
3:字串常量(第二種表示方法)//定義 public enum EnumKey { MESSAGE_UPDATE(1), MESSAGE_DELETE(2), MESSAGE_ADD(3); public int tag; EnumKey(int iTag) { this.tag = iTag; } } //使用 int i =EnumKey.MESSAGE_ADD.tag;
//定義
public enum EnumKey {
MESSAGE_UPDATE("update"), MESSAGE_DELETE("delete"), MESSAGE_ADD("add");
public String msg;
EnumKey(String str) {
this.msg = str;
}
}
//使用
String s =EnumKey.MESSAGE_ADD.msg;
4:新增方法
//定義 public enum EnumKey { MESSAGE_UPDATE("update", 1), MESSAGE_DELETE("delete", 2), MESSAGE_ADD("add", 3); public String msg; public int tag; EnumKey(String str, int iTag) { this.msg = str; this.tag = iTag; } public static boolean getMax(int flag) { return flag > 1 ? true : false; } } //使用 EnumKey.MESSAGE_ADD.getMax(2);
小結:
'
發現什麼了沒? 列舉的每個例項所包含的引數和列舉的構造方法所包含的引數一致 於是你會發現,其實MESSAGE_UPDATE("update", 1)所代表的意思是EnumKey MESSAGE_UPDATE=new EnumKey("update", 1),即:
public class EnumKey {
public static String msg;
public static int tag;
public EnumKey(String str, int iTag) {
this.msg = str;
this.tag = iTag;
}
}
EnumKey MESSAGE_UPDATE=new EnumKey("update", 1);