Java枚举

1、枚举的定义

//定义枚举
public enum EnumPet {
    Dog,
    Cat,
    Bear,
    Pig
}

2、枚举的遍历

//测试枚举
public class EnumPetTest {
    public static void main(String[] args) {
        for (EnumPet enumPet : EnumPet.values()) {
            System.out.println("name:" + enumPet.name() + "   value:" + enumPet.toString() + "  class:" + enumPet.getDeclaringClass());
        }
    }
}

//输出结果
name:Dog   value:Dog  class:class com.whw.EnumPet
name:Cat   value:Cat  class:class com.whw.EnumPet
name:Bear   value:Bear  class:class com.whw.EnumPet
name:Pig   value:Pig  class:class com.whw.EnumPet

3、枚举的常用方法

EnumPet enumPetArray[] = EnumPet.values();//获取枚举项数组
EnumPet enumPet = EnumPet.valueOf("Cat");//根据枚举项全名,获取枚举项

String name=enumPet.name();//获取枚举项的名称
String petString =enumPet.toString();//获取枚举项的值
String className=enumPet.getDeclaringClass().getName();//获取枚举项所在类的名称
int result =enumPet.compareTo(EnumPet.Dog);//对两个枚举项的排序顺序比较
int order = enumPet.ordinal();//获取枚举项的顺序

4、使用switch

public static void printPet(EnumPet enumPet) {
        switch (enumPet) {
            case Cat:
                System.out.println("小猫");
                break;
            case Dog:
                System.out.println("小狗");
                break;
            case Pig:
                System.out.println("小猪");
                break;
            case Bear:
                System.out.println("小熊");
                break;
        }
    }

5、向枚举项添加自定义值和方法

public enum EnumWeek {
    MON("星期一",1),
    TUE("星期二",2),
    WED("星期三",3),
    THU("星期四",4),
    FRI("星期五",5),
    SAT("星期六",6),
    SUN("星期日",7) {

    };

    private String value;
    private int num;

    EnumWeek(String value,int num) {
        this.value = value;
        this.num=num;
    }

    //重载枚举的toString方法
    @Override
    public String toString() {
        return "value:" + value + " num:" + num;
    }

    public  String getValue(){
        return value;
    }

    public  int getNum(){
        return  num;
    }
}


public class TestEnum {
    public static void main(String[] args) {
        //遍历枚举
        for (EnumWeek enumWeek : EnumWeek.values()) {
            System.out.println("name:" + enumWeek.name() + "   value:" + enumWeek.toString() + "  class:" + enumWeek.getDeclaringClass());
        }

        //使用自定义方法
        System.out.println(EnumWeek.FRI.getValue());//星期五
        System.out.println(EnumWeek.FRI.getNum());//5
    }
}

//输出结果
name:MON   value:value:星期一 num:1  class:class com.whw.EnumWeek
name:TUE   value:value:星期二 num:2  class:class com.whw.EnumWeek
name:WED   value:value:星期三 num:3  class:class com.whw.EnumWeek
name:THU   value:value:星期四 num:4  class:class com.whw.EnumWeek
name:FRI   value:value:星期五 num:5  class:class com.whw.EnumWeek
name:SAT   value:value:星期六 num:6  class:class com.whw.EnumWeek
name:SUN   value:value:星期日 num:7  class:class com.whw.EnumWeek

6、枚举实现接口

//定义接口
public interface IBehaviour {
    void print();
}

//定义枚举
public enum EnumColor implements  IBehaviour {
    Red("红色", 1),
    Green("绿色", 2),
    Blue("蓝色", 3);

    private String name;
    private int index;

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

    //实现接口
    @Override
    public void print() {
        System.out.println(this.name + " " + this.index);
    }
}

//测试枚举
public class TestEnumColor {
    public static void main(String[] args) {
        EnumColor enumColor=EnumColor.Blue;
        enumColor.print();//蓝色 3
    }
}
原文地址:https://www.cnblogs.com/giswhw/p/14865877.html