说明:
(1) 为什么写本篇博客?:在【SpringBoot电商项目订单模块前台创建订单接口】,又一次使用到了枚举类;而且,这个时候枚举类是用来【定义“常量”信息】的;;;;顿时发现,枚举类可以使用的场景还是比较多的,为此写本篇博客,暂时性总结一下;
(1) 可以先看下【SpringBoot电商项目用户模块枚举类和枚举数据类型】;这篇博客,总结了以前遇到过的枚举类的所有内容;
(2) 然后,在【SpringBoot电商项目用户模块API统一返回对象】中,为了都能够快速构建错误信息;我们通过枚举类,来组织和定义常见的错误信息;
package com.imooc.mall.exception;
/**
* 描述: 异常枚举
*/
public enum ImoocMallExceptionEnum {
NEED_USER_NAME(10001,"用户名不能为空"),
NEED_PASSWORD(10002,"密码不能为空"),
PASSWORD_TOO_SHORT(10003,"密码长度不能小于8位");
/**
* 异常码
*/
Integer code;
/**
* 异常信息
*/
String msg;
ImoocMallExceptionEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
这也是,枚举类最常见的使用方式;
(3) 然后,在 【SpringBoot电商项目订单模块前台创建订单接口】中,我们也使用枚举类(虽然是内部类啦)来组织订单状态信息;
package com.imooc.mall.common;
import com.google.common.collect.Sets;
import com.imooc.mall.exception.ImoocMallException;
import com.imooc.mall.exception.ImoocMallExceptionEnum;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Set;
/**
* 描述:存放常量
*/
@Component
public class Constant {
/**
* 枚举类,来说明订单状态
*/
public enum OrderStatusEnum {
CANCELED(0, "用户已取消"),
NOT_PAY(10, "未付款"),
PAID(20,"已付款"),
DELIVERED(30,"已发货"),
FINISHED(40,"交易完成");
private int code;
private String value;
OrderStatusEnum(int code, String value) {
this.code = code;
this.value = value;
}
public static OrderStatusEnum codeOf(int code) {
for (OrderStatusEnum orderStatusEnum:values() ) {
if (orderStatusEnum.getCode() == code) {
return orderStatusEnum;
}
}
throw new ImoocMallException(ImoocMallExceptionEnum.NO_ENUM);
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
}
● 其实,这儿的用法就是(2)中介绍的,枚举类最常用的用法;
● 只是,这儿增加了一个【根据code获取对应信息的方法】;这其中,用到了遍历枚举中枚举项的方法;