天天看點

枚舉類型Enum的含義分析

枚舉類型是一種基本資料類型而不是構造資料類型,從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:整型常量

//定義
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;
           

3:字元串常量(第二種表示方法)

//定義
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);
           

小結:

枚舉類型Enum的含義分析

'

發現什麼了沒? 枚舉的每個執行個體所包含的參數和枚舉的構造方法所包含的參數一緻 于是你會發現,其實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);
           

繼續閱讀