2017.8.13學(xué)習(xí)小結(jié) - 枚舉4

回顧

3.枚舉類與枚舉關(guān)鍵字的聯(lián)系

五杨刨、類集對(duì)于枚舉的支持

EnumMap和EnumSet類

1.EnumMap

2.EnumSet

學(xué)習(xí)小結(jié)

六赖舟、深入了解枚舉

1.枚舉的構(gòu)造方法

java虛擬機(jī)一般將對(duì)被創(chuàng)建的枚舉類型對(duì)象自動(dòng)編號(hào)纬凤,編號(hào)從0開(kāi)始聘裁。通過(guò)定制內(nèi)部方法,實(shí)現(xiàn)控制每個(gè)枚舉類型的值鹃彻。

范例:定義枚舉的構(gòu)造方法

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2017年8月13日 下午8:35:40
 */

enum NewColor {
    RED("紅色", 4), GREEN("綠色", 5), BLUE("藍(lán)色", 6); // NewColor定義的三個(gè)對(duì)象
    private String name; // 成員變量
    private int index; // 索引編號(hào)

    private NewColor(String name, int index) { // 構(gòu)造方法
        this.name = name;
        this.index = index;
    }

    public static String getName(int index) {
        for (NewColor c : NewColor.values()) {
            if (c.getIndex() == index) {
                return c.name;
            }
        }
        return null;
    }

    public String getName() {
        return name;
    }

    public static void setName(int index, String name) {
        for (NewColor c : NewColor.values()) {
            if (c.getIndex() == index) {
                c.name = name;
                return;
            }
        }
    }

    public int getIndex() {
        return index;
    }

    public static void setIndex(int index, String name) {
        for (NewColor c : NewColor.values()) {
            if (c.getName() == name) {
                c.index = index;
                return;
            }
        }
    }
}

public class P266_11_10 {

    public static void main(String[] args) {
        System.out.println("------輸出枚舉中元素------");
        System.out.println(NewColor.RED.getIndex() + "-->" + NewColor
                .RED.getName());
        System.out.println(NewColor.GREEN.getIndex() + "-->" + NewColor
                .GREEN.getName());
        System.out.println(NewColor.BLUE.getIndex() + "-->" + NewColor
                .BLUE.getName());

        System.out.println("----在自定義編號(hào)和屬性值之后尉桩,測(cè)試----");
        NewColor.setName(4, "黑色"); // 重新設(shè)置名稱
        System.out.println("4-->" + NewColor.getName(4));
        NewColor.setIndex(7, "黑色"); // 重新設(shè)置索引編號(hào)
        System.out.println("7-->" + NewColor.getName(7));
    }

}

運(yùn)行結(jié)果:

運(yùn)行結(jié)果

2.枚舉的接口

①.為什么需要接口

Java語(yǔ)言中的接口,只是對(duì)要實(shí)現(xiàn)該接口方法的所有類提出了一個(gè)共享的固定格式的協(xié)議(protocol)贪庙。這些協(xié)議固定了在其內(nèi)的靜態(tài)常量和方法簽名(方法名+參數(shù)列表)形式蜘犁,而繼承這個(gè)接口的類,就可在其類中對(duì)這些繼承而來(lái)的方法止邮,“獨(dú)立自主这橙、自由發(fā)揮”地實(shí)現(xiàn)這些方法。

Java不支持多繼承导披,采用單繼承多接口的模式屈扎,既保持了類的數(shù)據(jù)安全,也間接實(shí)現(xiàn)了多繼承撩匕。

②.枚舉中如何實(shí)現(xiàn)接口

枚舉和普通類一樣鹰晨,可以實(shí)現(xiàn)一個(gè)或者多個(gè)接口。當(dāng)一個(gè)枚舉實(shí)現(xiàn)一個(gè)接之后止毕,各個(gè)枚舉對(duì)象都必須分別實(shí)現(xiàn)接口中的抽象方法模蜡。

范例

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2017年8月13日 下午10:23:27
 * @Description TODO 創(chuàng)建接口
 */
public interface P269_11_11_1 {
    public String getColor();
}
package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2017年8月13日 下午10:27:44
 * @Description TODO 對(duì)新建接口抽象方法的調(diào)用
 */
public enum P270_11_11_2 implements P269_11_11_1 {
    紅色 { // 每個(gè)枚舉對(duì)象都需要具體化從接口中繼承而來(lái)的方法
        public String getColor() {
            return "RED";
        }
    },
    綠色 {
        public String getColor() {
            return "GREEN";
        }
    },
    藍(lán)色 {
        public String getColor() {
            return "BLUE";
        }
    };
}
package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2017年8月13日 下午10:33:45
 * @Description TODO 測(cè)試接口
 */
public class P270_11_11_3 {
    public static void main(String[] args) {
        for (P270_11_11_2 c : P270_11_11_2.values()) {
            System.out.println(c.ordinal() + "-->" + c
                    .name() + ":" + c.getColor()); // 遍歷輸出
        }
    }
}

運(yùn)行結(jié)果:

運(yùn)行結(jié)果

3.在枚舉中定義抽象方法

可以在枚舉中直接定義抽象方法,但需要為枚舉中的每個(gè)對(duì)象單獨(dú)實(shí)現(xiàn)此方法扁凛。

PS.抽象方法:就是用關(guān)鍵字abstract修飾且沒(méi)有實(shí)現(xiàn)主體的方法忍疾。

范例

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2017年8月13日 下午10:55:56
 * @Description TODO 定義枚舉的抽象方法
 */
enum NewColor2 {
    紅色 { // 每個(gè)枚舉對(duì)象都需要實(shí)現(xiàn)所定義的抽象方法
        public String getColor() {
            return "RED";
        }
    },
    綠色 {
        public String getColor() {
            return "GREEN";
        }
    },
    藍(lán)色 {
        public String getColor() {
            return "BLUE";
        }
    };

    public abstract String getColor(); // 定義抽象方法
}

public class P271_11_12 {
    public static void main(String[] args) {
        for (NewColor2 c : NewColor2.values()) {
            System.out.println(c.ordinal() + "-->" + c
                    .name() + ":" + c.getColor());
        }
    }
}

運(yùn)行結(jié)果:

運(yùn)行結(jié)果

思考

今天,我開(kāi)始把范例也加進(jìn)學(xué)習(xí)小結(jié)里谨朝,本來(lái)并不想以此充數(shù)的卤妒,可是想了想甥绿,范例,也是我邊學(xué)邊做一個(gè)字母一個(gè)字母碼出來(lái)的则披,也是學(xué)習(xí)的內(nèi)容共缕,不添加進(jìn)來(lái)的話,學(xué)習(xí)的筆記確實(shí)很單薄呀收叶。

明天骄呼,枚舉應(yīng)該可以結(jié)尾了,結(jié)尾后判没,可以再深入點(diǎn)學(xué)習(xí)java了蜓萄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市澄峰,隨后出現(xiàn)的幾起案子嫉沽,更是在濱河造成了極大的恐慌,老刑警劉巖俏竞,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绸硕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡魂毁,警方通過(guò)查閱死者的電腦和手機(jī)玻佩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)席楚,“玉大人咬崔,你說(shuō)我怎么就攤上這事》持龋” “怎么了垮斯?”我有些...
    開(kāi)封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)只祠。 經(jīng)常有香客問(wèn)我兜蠕,道長(zhǎng),這世上最難降的妖魔是什么抛寝? 我笑而不...
    開(kāi)封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任熊杨,我火速辦了婚禮,結(jié)果婚禮上盗舰,老公的妹妹穿的比我還像新娘猴凹。我一直安慰自己,他們只是感情好岭皂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布郊霎。 她就那樣靜靜地躺著,像睡著了一般爷绘。 火紅的嫁衣襯著肌膚如雪书劝。 梳的紋絲不亂的頭發(fā)上进倍,一...
    開(kāi)封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音购对,去河邊找鬼猾昆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛骡苞,可吹牛的內(nèi)容都是我干的垂蜗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼解幽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贴见!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起躲株,我...
    開(kāi)封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤片部,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后霜定,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體档悠,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年望浩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辖所。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磨德,死狀恐怖缘回,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剖张,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布揩环,位于F島的核電站搔弄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏丰滑。R本人自食惡果不足惜顾犹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望褒墨。 院中可真熱鬧炫刷,春花似錦、人聲如沸郁妈。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)噩咪。三九已至顾彰,卻和暖如春极阅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涨享。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工筋搏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厕隧。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓奔脐,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吁讨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子髓迎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法挡爵,內(nèi)部類的語(yǔ)法竖般,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法茶鹃,線程的語(yǔ)...
    子非魚_t_閱讀 31,631評(píng)論 18 399
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,138評(píng)論 25 707
  • 面向?qū)ο笾饕槍?duì)面向過(guò)程涣雕。 面向過(guò)程的基本單元是函數(shù)。 什么是對(duì)象:EVERYTHING IS OBJECT(萬(wàn)物...
    sinpi閱讀 1,055評(píng)論 0 4
  • 此刻22:56分闭翩,距離十一點(diǎn)還有四分鐘挣郭,今晚大把的時(shí)間我就干了一件正事——錄音,僅僅花了不到三分鐘的時(shí)間疗韵。其余我...
    真不真閱讀 133評(píng)論 1 1
  • 主題:溝通與情緒 輸出:溝通6.2兑障,情緒2.4 關(guān)于溝通: 【表達(dá)徐徑應(yīng)用】 聽(tīng)完對(duì)方的一番話,不必急著展開(kāi)討論和...
    jiang丫丫丫頭閱讀 140評(píng)論 0 0