Java基础知识(二):枚举的使用

枚举是Java5引入的特性,它是一个常量集合,如周一、周二等。枚举能减少错误,增强代码可读性。例如,可以定义一个ErrorCode枚举,包含状态码、信息和描述。使用枚举可以在switch语句中进行比较,也可以添加方法来检查枚举值是否存在。使用`==`比较枚举值更安全,不会出现空指针异常并能编译时期检查类型兼容性。
摘要由CSDN通过智能技术生成

什么是枚举

枚举,可以理解为是一个常量的集合。比如星期是一个集合,那么周一,周二,周三等就是这里面的常量。枚举类型是Java 5中新增的特性。

为什么使用枚举

在没有使用枚举之前,我们可以定义一个接口,然后在里面定义常量。如下

interface Day{
    int ONE_DAY = 1;
    int TWO_DAY = 2;
    int THREE_DAY = 3;
}

其实这样看上去也每什么太大影响,但人总是会放错,而枚举可以把这些可能会发生的错误,放大,或者直接就避免了,让我们开发起来出现错误的概率就更小。

并且,它可以类似对象一样,可以添加一些成员,更加方便我们阅读。

    SUCCESS(0, "ok", ""),
    PARAMS_ERROR(40000, "请求参数错误", ""),
    NULL_ERROR(40001, "请求数据为空", ""),
    NOT_LOGIN(40100, "未登录", ""),
    NO_AUTH(40101, "无权限", ""),
    SYSTEM_ERROR(50000, "系统内部异常", "");

如何使用枚举

  1. 使用enum关键字创建
public enum ErrorCode {
}

2.添加枚举值

public enum ErrorCode {
    SUCCESS,PARAMS_ERROR,NULL_ERROR,NOT_LOGIN,NO_AUTH,SYSTEM_ERROR;
}

3.我们还可以给每个枚举值增加属性,让枚举值更加清晰,有含义。

public enum ErrorCode {

    SUCCESS(0, "ok", ""),
    PARAMS_ERROR(40000, "请求参数错误", ""),
    NULL_ERROR(40001, "请求数据为空", ""),
    NOT_LOGIN(40100, "未登录", ""),
    NO_AUTH(40101, "无权限", ""),
    SYSTEM_ERROR(50000, "系统内部异常", "");

    private final int code;

    /**
     * 状态码信息
     */
    private final String message;

    /**
     * 状态码描述(详情)
     */
    private final String description;

    ErrorCode(int code, String message, String description) {
        this.code = code;
        this.message = message;
        this.description = description;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public String getDescription() {
        return description;
    }
}

4.如何进行使用对比

可以在switch中进行对比

  ErrorCode code = ErrorCode.PARAMS_ERROR;
        switch (code){
            case PARAMS_ERROR:
                break;
            case NO_AUTH:
                break;
        }

枚举中,还可以添加方法,比如我们可以写一个方法,判断传入的枚举值是否在其中。

public static ErrorCode getEnumByValue(Integer code){
        ErrorCode[] values = ErrorCode.values();
        for (ErrorCode errorCode: values) {
            if (errorCode.code== code) {
                return errorCode;
            }
        }
        return null;
    }

我们调用的时候可以把枚举的code属性传递进来,就可以知道是否存在其中。如果不在,说明用户传递的数据是错误的,我们要给出响应。

枚举值使用equest还是使用==

都可以,但是用 == 更好

因为
1.== 不会有空指针异常
2.== 在编译期检测类型兼容性,如果出现枚举值不是这个枚举类的,则直接编译错误。如果使用equals则不会提示报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前期后期

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值