什么是枚舉
枚舉是從java5開始提供的一種新的數(shù)據(jù)類型,是一個特殊的類,就是固定的多個常量集合
格式:
[修飾符] enum 枚舉類名
{
? ? 常量A,常量B
}
在底層直接繼承enum類,Enum是所有枚舉的父類
特點(diǎn):(只是輕微的總結(jié))
? ? 枚舉的直接父類java.lang.Enum,不顯示繼承Enum
? ? 枚舉相當(dāng)于一個類,可以定義構(gòu)造方法,成員變量,普通方法和抽象方法
? ? 默認(rèn)私有的構(gòu)造方法,即使不寫訪問權(quán)限也是private,(底層沒有無參構(gòu)造器)
? ? 每一個實(shí)例都是用全局變量表示,枚舉對象是固定的,個數(shù)有限,不能使用new關(guān)鍵字
? ? 枚舉實(shí)例必須在枚舉體的最開始部分,最后要用分號隔開
? ? 枚舉實(shí)例后面有花括號,表示是枚舉的匿名內(nèi)部類對象
枚舉的使用:
? ? 枚舉中都是全局公共的靜態(tài)常量,可以直接使用類名調(diào)用
? ? Enum是所有枚舉的父類,所以可以調(diào)用Enum中的方法
? ? ? ? String name = 枚舉對象.name();//返回常量名稱
? ? ? ? int ordinal = 枚舉對象.ordinal();// 返回對象的序號,從0開始
? ? ? ? String str = 枚舉對象.toString();// 返回枚舉對象的常量名稱
? ? 編譯器生成的枚舉類是靜態(tài)方法
? ? ? ? 枚舉類型[] values():? 返回當(dāng)前枚舉類型所有的常量,使用數(shù)組封裝
? ? ? ? 枚舉類型[] valueof(String name); 把一個指定名稱字符串轉(zhuǎn)換為當(dāng)前枚舉類型中同名的常量
? ? 從java5開始出現(xiàn)枚舉,switch也支持枚舉
? ? ? ? switch只支持int類型,支持枚舉是因?yàn)榈讓邮褂玫拿杜e對象的ordinal,而ordinal的類型依然是int類型
推薦書籍<<effective java>>