enums枚举 常用写法及调用

枚举是一个特殊的类,类一样可以用自己的变量、方法和构造函数,构造函数只能使用 private 访问修饰符

一、常用写法

package com.pd.shop.enums;

public enum DefaultStatusEnum {
    /**
     * 否;禁用
     */
    NO(0, "否"),
    /**
     * 是;启用
     */
    YES(1, "是"),
    ;

    DefaultStatusEnum(Integer status, String desc) {
        this.status = status;
        this.desc = desc;
    }

    private Integer status;
    private String desc;

    public Integer getStatus() {
        return status;
    }

    public String getDesc() {
        return desc;
    }

    /**
     * 获取枚举类型
     *
     * @param status
     * @return DefaultStatusEnum
     */
    public static DefaultStatusEnum getEnum(Integer status) {
        DefaultStatusEnum[] statusEnums = values();
        for (DefaultStatusEnum item : statusEnums) {
            if (item.getStatus().equals(status)) {
                return item;
            }
        }

        return null;
    }
}

枚举类中的方法values(), ordinal() 和 valueOf()

values() 返回枚举所有的值。

ordinal() 返回枚举常量的索引。

valueOf() 方法返回指定字符串值的枚举常量。


一、调用方法

//获取枚举
DefaultStatusEnum noEnum = DefaultStatusEnum.NO;

//获取索引
Integer index = noEnum.ordinal();

//获取枚举值
DefaultStatusEnum statusEnum = DefaultStatusEnum.valueOf("NO");

//获取枚举值
Integer status = DefaultStatusEnum.NO.getStatus();
//获取枚举值备注
String desc = DefaultStatusEnum.NO.getDesc();

//判断是否包含枚举
DefaultStatusEnum tempEnum = DefaultStatusEnum.getEnum(0);
if(tempEnum == null){
    //TODO   不包含此枚举
}

//比较枚举值
if(noEnum.getStatus().equals(0)){
    //TODO
}

//比较枚举类型
if(noEnum == DefaultStatusEnum.YES){
    //TODO
}
posted @ 2021-03-11 16:14  预立科技  阅读(427)  评论(0编辑  收藏  举报