Java枚举的常用使用方法

jdk1.5之后加入了枚举类新特性。

最简单的枚举使用方式

/**
 * 季节枚举类
 *
 * @author Gary
 * @return
 * @date 2019-04-27 19:24
 */
public enum SeasonEnum {

    SPRING, SUMMER, AUTUMN, WINTER

}

用法举例:

    SeasonEnum spring = SeasonEnum.SPRING;
    System.out.println("SPRING枚举值:" + spring.name());

输出为:

SPRING枚举值:SPRING

有构造方法的枚举类(构造方法有一个参数)

/**
 * 订单状态枚举类
 *
 * @author Gary
 * @date 2019-04-27 19:29
 */
public enum StatusEnum {

    //未开始
    NotStart(0),

    //执行中
    Doing(1),

    //暂停
    Pause(2),

    //已完成
    Completed(3),

    //删除
    Del(4),

    //提前结束
    CutShort(5);

    private int index;

    StatusEnum(int index) {
        this.index = index;
    }

    public int getIndex() {
        return index;
    }

    /**
     * 根据index返回对应的枚举值
     *
     * @param index
     * @return
     */
    public static StatusEnum getValueByIndex(int index) {
        switch (index) {
            case 0:
                return NotStart;
            case 1:
                return Doing;
            case 2:
                return Pause;
            case 3:
                return Completed;
            case 4:
                return Del;
            case 5:
                return CutShort;
            default:
                return null;
        }
    }

}

用法举例:

        int index = StatusEnum.Doing.getIndex();
        System.out.println("状态Doing的索引值为:" + index);
        StatusEnum statusEnum = StatusEnum.getValueByIndex(2);
        System.out.println("索引值为2的枚举值是:" + statusEnum);

输出为:
状态Doing的索引值为:1
索引值为2的枚举值是:Pause

构造方法有两个参数的枚举类

/**
 * 星期枚举类
 *
 * @author Gary
 * @date 2019-04-21 22:29
 */
public enum WeekDayEnum {

    // 星期日
    SUN(0, "星期日"),
    MON(1, "星期一"),
    TUE(2, "星期二"),
    WED(3, "星期三"),
    THU(4, "星期四"),
    FRI(5, "星期五"),
    SAT(6, "星期六");

    private Integer index;
    private String value;

    WeekDayEnum(Integer index, String value) {
        this.index = index;
        this.value = value;
    }

    public Integer getIndex() {
        return index;
    }

    public String getValue() {
        return value;
    }

    /**
     * 根据枚举名称获得value
     * 比如根据“FRI”得到“星期五”
     *
     * @param name
     * @return java.lang.String
     * @author Gary
     * @date 2019-04-21 22:35
     */
    public static String getValueByName(String name) {
        WeekDayEnum[] values = WeekDayEnum.values();
        for (WeekDayEnum value : values) {
            if (value.name().equals(name)) {
                return value.getValue();
            }
        }
        return null;
    }

    /**
     * 根据属性value获取属性index:
     * 比如根据 "星期三" 得到 3
     *
     * @param value
     * @return Integer
     */
    public static Integer getIndexByValue(String value) {
        for (WeekDayEnum weekDayEnum : WeekDayEnum.values()) {
            String v = weekDayEnum.getValue();
            if (v.equals(value)) {
                return weekDayEnum.getIndex();
            }
        }
        return null;
    }

    /**
     * 根据属性index获取属性value
     * 比如根据 3 得到 "星期三"
     *
     * @param index
     * @return
     */
    public static String getValueByIndex(Integer index) {
        for (WeekDayEnum weekDayEnum : WeekDayEnum.values()) {
            Integer in = weekDayEnum.getIndex();
            if (in.equals(index)) {
                return weekDayEnum.getValue();
            }
        }
        return null;
    }

    /**
     * 根据属性index获取对应的枚举值:
     * 比如根据 3 得到枚举值 WED
     *
     * @param index
     * @return
     */
    public static WeekDayEnum getNameByIndex(Integer index) {
        for (WeekDayEnum weekDayEnum : WeekDayEnum.values()) {
            if (weekDayEnum.getIndex().equals(index)) {
                return weekDayEnum;
            }
        }
        return null;
    }

    /**
     * 返回一个由index和value组成的map集合:
     * {0=星期日, 1=星期一, 2=星期二, 3=星期三, 4=星期四, 5=星期五, 6=星期六}
     *
     * @return
     */
    public static Map<Integer, String> getIndexValueMap() {
        Map<Integer, String> map = new HashMap<>();
        for (WeekDayEnum weekDayEnum : WeekDayEnum.values()) {
            Integer index = weekDayEnum.getIndex();
            String value = weekDayEnum.getValue();
            map.put(index, value);
        }
        return map;
    }

}

用法举例:

        Integer i = WeekDayEnum.MON.getIndex();
        System.out.println("MON的索引值为:" + i);
        Integer ii = WeekDayEnum.getIndexByValue("星期日");
        System.out.println("星期日的索引值为:" + ii);
        String value = WeekDayEnum.getValueByName("FRI");
        System.out.println("FRI的value为:" + value);
        String v = WeekDayEnum.getValueByIndex(4);
        System.out.println("索引值为4的value为:" + v);
        Map<Integer, String> map = WeekDayEnum.getIndexValueMap();
        System.out.println(map);

输出为:

MON的索引值为:1
星期日的索引值为:0
FRI的value为:星期五
索引值为4的value为:星期四
{0=星期日, 1=星期一, 2=星期二, 3=星期三, 4=星期四, 5=星期五, 6=星期六}

注意:枚举类的构造方法必须是private修饰,如果不加默认为private。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值