枚舉

從JDK 5開始督弓,枚舉被添加到Java語言中塘幅。在Java中昔案,枚舉被定義為類,可以具有構(gòu)造函數(shù)电媳,方法以及實(shí)例變量踏揣。

基礎(chǔ)知識

枚舉的聲明

創(chuàng)建枚舉需要使用關(guān)鍵字enum,例如:

public enum Fruit {

    APPLE, BANANA, ORANGE, PEACH

}

APPLE, BANANA等稱為枚舉常量匾乓,這些常量被隱式地聲明為public static final成員捞稿,并且都是Fruit類型(自類型化)。

枚舉的特點(diǎn)

枚舉雖然被定義為類拼缝,但是不能通過new來實(shí)例化枚舉娱局。枚舉變量的聲明和使用在許多方面與基本類型相同。

  • 枚舉變量只能被賦值為在該枚舉類型中定義的枚舉常量咧七。
Fruit fruit = Fruit.APPLE;
  • 可以使用關(guān)系運(yùn)算符“==”比較兩個(gè)枚舉對象是否相等衰齐。
fruit == Fruit.BANANA;
  • 枚舉值也可以用于控制switch語句。
switch (fruit) {
    case APPLE:
        // ...
    case BANANA:
        // ...
}

注意:在case語句中继阻,枚舉常量沒有使用枚舉類型進(jìn)行限定耻涛,這是因?yàn)閟witch表達(dá)式中的枚舉類型已經(jīng)隱式指定了case常量的枚舉類型。

  • 枚舉常量的toString()方法返回常量的名稱瘟檩。
System.out.println(Fruit.BANANA); // BANANA

預(yù)定義方法

所有枚舉都自動(dòng)包含兩個(gè)預(yù)定義方法:values()和valueOf()抹缕。

values方法

values()返回包含枚舉常量列表的數(shù)組。一般形式如下:
public static enum-type[] values()

例子

Fruit[] fruits = Fruit.values();
for (Fruit fruit : fruits) {
    System.out.println(fruit);
}

valueOf方法

valueOf()返回傳入的字符串參數(shù)對應(yīng)的枚舉常量墨辛。一般形式如下:
public static enum-type valueOf(String name)

例子

Fruit fruit = Fruit.valueOf("ORANGE");
System.out.println(fruit); // ORANGE

枚舉是類類型

雖然不能用new實(shí)例化枚舉卓研,但是枚舉卻有許多和其他類相同的功能,比如枚舉可以有構(gòu)造函數(shù)睹簇、實(shí)例變量和方法奏赘,甚至可以實(shí)現(xiàn)接口。

public enum Fruit {

    APPLE(10), BANANA(1), ORANGE(2), PEACH;

    private int price;

    Fruit() {
        price = 8;
    }

    Fruit(int price) {
        this.price = price;
    }

    public int getPrice() {
        return price;
    }

}

雖然枚舉是類類型太惠,但是枚舉有兩條限制使得它不能擴(kuò)展志珍。

  • 枚舉不能繼承其它類。
  • 枚舉不能被其它類繼承垛叨。

枚舉繼承自Enum類

盡管聲明枚舉時(shí)不能繼承其它類伦糯,但是所有枚舉都自動(dòng)繼承父類java.lang.Enum柜某。這個(gè)類定義了所有枚舉都可以使用的一些方法。

  • name()方法獲取枚舉常量的名稱敛纲。
  • ordinal()方法獲取枚舉常量在常量列表中的位置的值喂击,稱為枚舉常量的序數(shù)值。序數(shù)值從0開始淤翔。
  • compareTo()方法比較相同類型的兩個(gè)枚舉常量的序數(shù)值翰绊。
  • equals()方法比較枚舉常量和其他對象是否相等。只有當(dāng)兩個(gè)對象都引用同一個(gè)枚舉中相同的常量時(shí)旁壮,它們才相等监嗜。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市抡谐,隨后出現(xiàn)的幾起案子裁奇,更是在濱河造成了極大的恐慌,老刑警劉巖麦撵,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刽肠,死亡現(xiàn)場離奇詭異,居然都是意外死亡免胃,警方通過查閱死者的電腦和手機(jī)音五,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羔沙,“玉大人躺涝,你說我怎么就攤上這事《蟪” “怎么了坚嗜?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長呢蛤。 經(jīng)常有香客問我,道長棍郎,這世上最難降的妖魔是什么其障? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮涂佃,結(jié)果婚禮上励翼,老公的妹妹穿的比我還像新娘。我一直安慰自己辜荠,他們只是感情好汽抚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伯病,像睡著了一般造烁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天惭蟋,我揣著相機(jī)與錄音苗桂,去河邊找鬼。 笑死告组,一個(gè)胖子當(dāng)著我的面吹牛煤伟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播木缝,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼便锨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了我碟?” 一聲冷哼從身側(cè)響起放案,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怎囚,沒想到半個(gè)月后卿叽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恳守,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年考婴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片催烘。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沥阱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伊群,到底是詐尸還是另有隱情考杉,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布舰始,位于F島的核電站崇棠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丸卷。R本人自食惡果不足惜枕稀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谜嫉。 院中可真熱鬧萎坷,春花似錦、人聲如沸沐兰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽住闯。三九已至瓜浸,卻和暖如春澳淑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斟叼。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工偶惠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朗涩。 一個(gè)月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓忽孽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谢床。 傳聞我的和親對象是個(gè)殘疾皇子兄一,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

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

  • 18.7.18一、概述枚舉常量在類型安全性和便捷性都很有保證识腿,如果出現(xiàn)類型問題編譯器也會(huì)提示我們改進(jìn)出革。除了不能繼承...
    靜心安分讀書閱讀 528評論 0 0
  • 枚舉 從 JDK 5 開始, 枚舉被添加到了 Java 語言中, 和其它語言中的描述相似, 但是這種相似只是表面上...
    我相信你愛過gg閱讀 499評論 0 0
  • 簡介 枚舉是Java1.5引入的新特性,通過關(guān)鍵字enum來定義枚舉類渡讼。枚舉類是一種特殊類骂束,它和普通類一樣可以使用...
    JimmieYang閱讀 42,965評論 4 75
  • 定義枚舉 在定義枚舉類型時(shí)我們使用的關(guān)鍵字是enum,與class關(guān)鍵字類似成箫,要注意展箱,值一般是大寫的字母,多個(gè)值之...
    笨笨噠2018閱讀 360評論 0 0
  • 一 《黑硬的瘦骨》 只剩下一身黑硬的瘦骨 擰成一股股繩索 以枝的形狀 貫穿根部的力量 直指蒼穹 難以休眠...
    海杯子閱讀 965評論 19 34