说明:

(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获取对应信息的方法】;这其中,用到了遍历枚举中枚举项的方法;