Java 枚舉用法詳解(一)

概念

enum 的全稱為 enumeration包券, 是 JDK 1.5 中引入的新特性介袜。
在Java中痹兜,被 enum 關(guān)鍵字修飾的類型就是枚舉類型。形式如下:

enum Color { RED, GREEN, BLUE }

如果枚舉不添加任何方法益缎,枚舉值默認為從0開始的有序數(shù)值谜慌。以 Color 枚舉類型舉例,它的枚舉常量依次為RED:0莺奔,GREEN:1欣范,BLUE:2

枚舉的好處:可以將常量組織起來,統(tǒng)一進行管理令哟。
枚舉的典型應用場景:錯誤碼恼琼、狀態(tài)機等。

枚舉類型的本質(zhì)

盡管 enum 看起來像是一種新的數(shù)據(jù)類型屏富,事實上晴竞,enum是一種受限制的類,并且具有自己的方法狠半。
創(chuàng)建enum時噩死,編譯器會為你生成一個相關(guān)的類,這個類繼承自 java.lang.Enum神年。
java.lang.Enum類聲明

public abstract class Enum<E extends Enum<E>>
        implements Comparable<E>, Serializable { ... }

枚舉的方法

在enum中已维,提供了一些基本方法:
values():返回enum實例的數(shù)組,而且該數(shù)組中的元素嚴格保持在enum中聲明時的順序已日。
name():返回實例名垛耳。
ordinal():返回實例聲明時的次序,從0開始。
gtDeclaringClass():返回實例所屬的enum類型堂鲜。
equals() :判斷是否為同一個對象栈雳。
可以使用 == 來比較enum實例。
此外泡嘴,java.lang.Enum實現(xiàn)了Comparable和 Serializable 接口甫恩,所以也提供 compareTo() 方法逆济。
例:展示enum的基本方法

public class EnumMethodDemo {
    enum Color {RED, GREEN, BLUE;}
    enum Size {BIG, MIDDLE, SMALL;}
    public static void main(String args[]) {
        System.out.println("=========== Print all Color ===========");
        for (Color c : Color.values()) {
            System.out.println(c + " ordinal: " + c.ordinal());
        }
        System.out.println("=========== Print all Size ===========");
        for (Size s : Size.values()) {
            System.out.println(s + " ordinal: " + s.ordinal());
        }

        Color green = Color.GREEN;
        System.out.println("green name(): " + green.name());
        System.out.println("green getDeclaringClass(): " + green.getDeclaringClass());
        System.out.println("green hashCode(): " + green.hashCode());
        System.out.println("green compareTo Color.GREEN: " + green.compareTo(Color.GREEN));
        System.out.println("green equals Color.GREEN: " + green.equals(Color.GREEN));
        System.out.println("green equals Size.MIDDLE: " + green.equals(Size.MIDDLE));
        System.out.println("green equals 1: " + green.equals(1));
        System.out.format("green == Color.BLUE: %b\n", green == Color.BLUE);
    }
}

輸出

=========== Print all Color ===========
RED ordinal: 0
GREEN ordinal: 1
BLUE ordinal: 2
=========== Print all Size ===========
BIG ordinal: 0
MIDDLE ordinal: 1
SMALL ordinal: 2
green name(): GREEN
green getDeclaringClass(): class org.zp.javase.enumeration.EnumDemo$Color
green hashCode(): 460141958
green compareTo Color.GREEN: 0
green equals Color.GREEN: true
green equals Size.MIDDLE: false
green equals 1: false
green == Color.BLUE: false

枚舉的特性

枚舉的特性酌予,歸結(jié)起來就是一句話:
除了不能繼承,基本上可以將 enum 看做一個常規(guī)的類奖慌。
但是這句話需要拆分去理解抛虫,讓我們細細道來。

歡迎加入學習交流群569772982简僧,大家一起學習交流建椰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市岛马,隨后出現(xiàn)的幾起案子棉姐,更是在濱河造成了極大的恐慌,老刑警劉巖啦逆,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伞矩,死亡現(xiàn)場離奇詭異,居然都是意外死亡夏志,警方通過查閱死者的電腦和手機乃坤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沟蔑,“玉大人湿诊,你說我怎么就攤上這事∈莶模” “怎么了厅须?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長食棕。 經(jīng)常有香客問我朗和,道長,這世上最難降的妖魔是什么宣蠕? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任例隆,我火速辦了婚禮,結(jié)果婚禮上抢蚀,老公的妹妹穿的比我還像新娘镀层。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布唱逢。 她就那樣靜靜地躺著吴侦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坞古。 梳的紋絲不亂的頭發(fā)上备韧,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音痪枫,去河邊找鬼织堂。 笑死,一個胖子當著我的面吹牛奶陈,可吹牛的內(nèi)容都是我干的易阳。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼吃粒,長吁一口氣:“原來是場噩夢啊……” “哼潦俺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起徐勃,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤事示,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后僻肖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肖爵,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年檐涝,在試婚紗的時候發(fā)現(xiàn)自己被綠了遏匆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡谁榜,死狀恐怖幅聘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窃植,我是刑警寧澤帝蒿,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站巷怜,受9級特大地震影響葛超,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜延塑,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一绣张、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧关带,春花似錦侥涵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽务豺。三九已至,卻和暖如春嗦明,著一層夾襖步出監(jiān)牢的瞬間笼沥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工娶牌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奔浅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓裙戏,卻偏偏與公主長得像乘凸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子累榜,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法灵嫌,內(nèi)部類的語法壹罚,繼承相關(guān)的語法,異常的語法寿羞,線程的語...
    子非魚_t_閱讀 31,599評論 18 399
  • 概念 enum 的全稱為 enumeration猖凛, 是 JDK 1.5 中引入的新特性。 在Java中绪穆,被 en...
    靜默虛空閱讀 8,458評論 1 18
  • 有時傷害辨泳,有時相助,人們總是在不經(jīng)意的時候與他人的人生緊密相連玖院。――題記 “不管是騷擾還是惡作劇菠红,寫這些信給浪矢雜...
    喂歪閱讀 209評論 0 2
  • 所謂“親其師试溯,信其道”,良好的師生關(guān)系是成功教育的前提郊酒,而良好師生關(guān)系的營造遇绞,主動權(quán)在于老師,而不是學生燎窘。教師...
    雪后山閱讀 644評論 4 12
  • 在這個萬紫千紅的網(wǎng)絡世界,我們見過了太多的大紅大紫。但這些事物都有一個通性倘屹,就是在紅火之后银亲,就會失去它原本了樣子。...
    盧卡Lucar閱讀 731評論 1 3