天天看點

Java枚舉類的用法(初學者)

一.什麼是枚舉?

枚舉為一組相關的值定義了一個共同的類型,使你可以在你的代碼中以類型安全的方式來使用這些值。說白了就是一個構造方法私有化,将對象的屬性封裝在了枚舉的執行個體中,更加的安全和實用,以及簡單明了的一個方式。

二.枚舉的特點

1.枚舉用的是enum關鍵字進行的定義(文法:public enum 枚舉方法名{代碼塊})。

2.枚舉變量之間用逗号隔開,且枚舉變量用大寫,多個單詞之間用"_"(下滑線)隔開,比如:INT_SUM。

3.定義完變量之後,以分号結束,如果隻是有枚舉變量,而不是自定義變量,分号可以省略。

4.隻需要類名.變量名就可以召喚沒變量了,和靜态變量一樣,通過類名.屬性的方式。

枚舉的使用

1.枚舉常量的使用

/**
* 枚舉常量
*/
public enum FinalEnumStudy {
    RED,
    BLANK,
    GREEN,
    YELLOW   
}           

2.枚舉Switch的使用

//首先定義一個SwitchEnumStudy枚舉類
/**
* 枚舉Switch
*/
public enum SwitchEnumStudy {
    GREEN,
    RED,
    BLANK

}

//然後定義一個SwitchEnumStudy2類使用Switch
public class SwitchEnumStudy2 {
    SwitchEnumStudy color = SwitchEnumStudy.RED;
    public void change () {
        switch(color){
            case RED:
                color = SwitchEnumStudy.GREEN;
                System.out.println(color);    
                break;
            case GREEN:
                color = SwitchEnumStudy.RED;
                System.out.println(color);
                break;
            case BLANK:
                color = SwitchEnumStudy.BLANK;
                System.out.println(color);
                break;

        }
        
    }


    publci static void main(String[] args){
        SwitchEnumStudy2 switchEnumStudy2 = new SwitchEnumStudy2();
        swtichEnumStudy2.change();
    }

}           

 3.枚舉類中添加新方法

/**
* 枚舉方法
*/
public enum EnumMethodStudy {
    RED(1, "紅色"),
    GREEN(2, "綠色"),
    BLUE(3, "藍色"),
    YELLOW(4, "綠色")

    //注意聲明變量的順序
    private int index;
    private String name;
    
    //構造方法
    EnumMethodStudy(int index, String name) {
        this.index = index;
        this.name = name;
    }
    
    //靜态方法
    public static String getName(int index){
        EnumMethodStudy[] values = EnumMethodStudy.values();
        for (EnumMethodStudy value : values) {
            if (value.getIndex() == index) {
                return value.neme;
            }
            
        }
        return null;
        
    }


    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    } 
        

    public static void main(String[] args) {
        Stirng name = EnumMethodStudy.getName(1);
        System.out.println(name);
        System.out.println(EnumMethodStudy.BLUE.getName());
        
        EnumMethodStudy[] values = EnumMethodStudy.values();
        for (EnumMethodStudy value : values) {
            System.out.println(value.getName());
            System.out.ptintln(value.name);
        }
    }   
        
}           

1.values()方法就是将枚舉類中所有的執行個體名稱周遊出來

2.name()方法就是将枚舉類中的所有的執行個體值周遊出來

4.覆寫枚舉的方法

public enum ToStringEnumMethod {
    RED(1, "紅色"),
    GREEN(2, "綠色"),
    BLANK(3, "黑色");

    private String name;
    private int index;

    ToStringEnumMethod(int i, String index) {
        this.index = i;
        this.name = index;
    }

    @Override
    public String toString() {
        return "ToStringEnumMethod{" +
                "name='" + name + '\'' +
                ", index=" + index +
                '}';
    }

    public static void main(String[] args) {
        System.out.println(ToStringEnumMethod.RED.toString());
        System.out.println(ToStringEnumMethod.GREEN.toString());
        System.out.println(ToStringEnumMethod.BLANK.toString());
    }
}           

5.枚舉接口的使用

/**
* 枚舉接口
*/
public interface InterfaceEnumStudy {
    public void println();
    public String getInfo();

}
/**
* 實作類
*/
public enum InterfaceEnumStudy2 implements InterfaceEnumStudy {
    RED("紅色", 1),
    GREEN("綠色", 2),
    BLANK("黑色", 3);

    private String name;
    private int index;

    InterfaceEnumStudy2(String name, int index) {
        this.name = name;
        this.index = index;
    }

    public void println() {
        System.out.println(this.name + " + " + this.index);
    }

    public String getInfo() {
        return this.name;
    }

    public static void main(String[] args) {
        System.out.println(InterfaceEnumStudy2.RED.getInfo());
        InterfaceEnumStudy2.GREEN.println();
    }

}           

6.使用組織接口枚舉

/**
* 組織接口
*/
public interface ZhuZhiEnumStudy {
    enum Coffee implements  ZhuZhiEnumStudy{
        BLANK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO
    }
    enum Dessert implements ZhuZhiEnumStudy{
        FRUIT, CAKE, GELATO
    }
	//兩個枚舉類都進行實作ZhuZhiEnumStudy接口
}

public class ZhuZhiEnumStudy2 {
    private static void testImplementsInterface() {
        for (ZhuZhiEnumStudy.Coffee coffee : ZhuZhiEnumStudy.Coffee.values()) {
            System.out.print(coffee + " ");
        }
        System.out.println();

        ZhuZhiEnumStudy.Dessert[] values = ZhuZhiEnumStudy.Dessert.values();
        for (ZhuZhiEnumStudy.Dessert dessertEnum : values) {
            System.out.print(dessertEnum);
        }
        System.out.println();
    }

    public static void main(String[] args) {
        testImplementsInterface();
        ZhuZhiEnumStudy zhuZhiEnumStudy = ZhuZhiEnumStudy.Dessert.CAKE;
        System.out.println(zhuZhiEnumStudy);
        zhuZhiEnumStudy = ZhuZhiEnumStudy.Coffee.BLANK_COFFEE;
        System.out.println(zhuZhiEnumStudy);
    }
}
//枚舉周遊通過testImplementsInterface方法進行周遊,這種方式在我們定義枚舉類多且定義要求分明的時候會用到。