天天看点

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方法进行遍历,这种方式在我们定义枚举类多且定义要求分明的时候会用到。