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

回顧

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

五、類集對于枚舉的支持

EnumMap和EnumSet類

1.EnumMap

2.EnumSet

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

六、深入了解枚舉

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

java虛擬機一般將對被創(chuàng)建的枚舉類型對象自動編號,編號從0開始。通過定制內(nèi)部方法,實現(xiàn)控制每個枚舉類型的值。

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

package com.Javastudy2;

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

enum NewColor {
    RED("紅色", 4), GREEN("綠色", 5), BLUE("藍色", 6); // NewColor定義的三個對象
    private String name; // 成員變量
    private int index; // 索引編號

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

}

運行結(jié)果:

運行結(jié)果

2.枚舉的接口

①.為什么需要接口

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

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

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

枚舉和普通類一樣,可以實現(xiàn)一個或者多個接口。當一個枚舉實現(xiàn)一個接之后,各個枚舉對象都必須分別實現(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 對新建接口抽象方法的調(diào)用
 */
public enum P270_11_11_2 implements P269_11_11_1 {
    紅色 { // 每個枚舉對象都需要具體化從接口中繼承而來的方法
        public String getColor() {
            return "RED";
        }
    },
    綠色 {
        public String getColor() {
            return "GREEN";
        }
    },
    藍色 {
        public String getColor() {
            return "BLUE";
        }
    };
}
package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2017年8月13日 下午10:33:45
 * @Description TODO 測試接口
 */
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()); // 遍歷輸出
        }
    }
}

運行結(jié)果:

運行結(jié)果

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

可以在枚舉中直接定義抽象方法,但需要為枚舉中的每個對象單獨實現(xiàn)此方法。

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

范例

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2017年8月13日 下午10:55:56
 * @Description TODO 定義枚舉的抽象方法
 */
enum NewColor2 {
    紅色 { // 每個枚舉對象都需要實現(xiàn)所定義的抽象方法
        public String getColor() {
            return "RED";
        }
    },
    綠色 {
        public String getColor() {
            return "GREEN";
        }
    },
    藍色 {
        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());
        }
    }
}

運行結(jié)果:

運行結(jié)果

思考

今天,我開始把范例也加進學(xué)習(xí)小結(jié)里,本來并不想以此充數(shù)的,可是想了想,范例,也是我邊學(xué)邊做一個字母一個字母碼出來的,也是學(xué)習(xí)的內(nèi)容,不添加進來的話,學(xué)習(xí)的筆記確實很單薄呀。

明天,枚舉應(yīng)該可以結(jié)尾了,結(jié)尾后,可以再深入點學(xué)習(xí)java了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,806評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,271評論 25 708
  • 面向?qū)ο笾饕槍γ嫦蜻^程。 面向過程的基本單元是函數(shù)。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,228評論 0 4
  • 此刻22:56分,距離十一點還有四分鐘,今晚大把的時間我就干了一件正事——錄音,僅僅花了不到三分鐘的時間。其余我...
    真不真閱讀 147評論 1 1
  • 主題:溝通與情緒 輸出:溝通6.2,情緒2.4 關(guān)于溝通: 【表達徐徑應(yīng)用】 聽完對方的一番話,不必急著展開討論和...
    jiang丫丫丫頭閱讀 196評論 0 0

友情鏈接更多精彩內(nèi)容