枚举的使用

枚举的使用

枚举相当于一个数据库,性能要比数据库好的多,不用建立连接释放连接之类的。
枚举的应用场景,比如我想定义一个1对应燕国,2对应赵国,3对应韩国…又便于后期的修改,配置一些对象,不用配置到数据库中就可以,就可以用枚举。

比如有这么一个业务场景,需要让燕国,赵国…七国都消灭了,秦国才能一统天下。

枚举对象都是单例的。

可以设计一个这么一个枚举:

public enum enumDemo {
    one(1,"燕国"),
    two(2,"齐国"),
    three(3,"楚国"),
    fore(4,"韩国"),
    five(5,"赵国"),
    six(6,"魏国"),
    senven(7,"秦国"),
    ;
    private int num;
    private String message;
    enumDemo(int num, String message){
        this.num = num;
        this.message = message;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    /**
     * 由key得到这个枚举对象
     * @param val
     * @return
     */
    public static enumDemo getvalue(int val){
        enumDemo[] values = enumDemo.values(); //得到所有的枚举对象数组
        for (enumDemo demo:values) {
             if(demo.getNum() == val){
                 return demo;
             }
        }
        return null;
    }

}



public static void main(String[] args) throws InterruptedException {
        CountDownLatch countDownLatch = new CountDownLatch(6);  //初始计数为6
        for(int i=1;i<=6;i++){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName()+"被灭");
                    countDownLatch.countDown();  //计数--
                }
            },**enumDemo.getvalue(i).getMessage()**).start();
        }
        countDownLatch.await();   //主线程一直等待直到countDownLatch变量减到0才开始执行

        System.out.println("秦国一统天下");
    }

结果:
燕国被灭
齐国被灭
楚国被灭
韩国被灭
赵国被灭
魏国被灭
秦国一统天下

自定义异常,里面传一个枚举对象,也是企业常用的一种方式

代码如下:

@AllArgsConstructor
@NoArgsConstructor
@Getter
public enum exceptionEnum {
    BRAND_NOT_FOND(404,"品牌没找到"),  //创建一个对象,枚举类型的对象类似于单例,
    CATAGORY_NOT_FOND(404,"商品分类没查到"),  //注意最后以逗号分隔
    SPEC_GROUP_NOT_FOND(404,"规格组没找到"),
    SPUDETAIL_NOT_FOND(404,"SPUDetail没找到"),
    SKU_NOT_FOND(404,"sku没找到"),
    SPEC_PARAM_NOT_FOND(404,"规格参数没找到"),
    BRAND_SAVE_ERROR(500,"新增品牌失败"),
    SPU_SAVE_ERROR(500,"新增商品失败"),
    SPU_NOT_FOND(404,"SPU没找到"),
    SPEC_GROUP_SAVE_ERROR(500,"新增规格组失败"),
    SPEC_PARAM_SAVE_ERROR(500,"新增规格参数失败"),
    SPEC_GROUP_UPDATE_ERROR(500,"编辑规格组失败"),
    SPEC_PARAM_UPDATE_ERROR(500,"编辑规格参数失败"),
    SPEC_GROUP_DELETE_ERROR(500,"删除规格组失败"),
    SPEC_PARAM_DELETE_ERROR(500,"删除规格参数失败"),
    UPLOAD_ERRO(500,"文件上传失败"),
    INVALID_FILE_TYPE(400,"无效的文件类型"),
    INVALID_DATA_TYPE(400,"无效的数据类型"),
    UPDATE_BRAND_ERROR(405,"更新品牌失败"),
    ;
    private int code; //状态码
    private String message; //提示信息
}


//自定义异常
public class lyException extends  RuntimeException {

    private exceptionEnum exceptionEnum;

    public com.ly.Enum.exceptionEnum getExceptionEnum() {

        return exceptionEnum;
    }

    public lyException(exceptionEnum exceptionEnum){

        this.exceptionEnum=exceptionEnum;
    }
}

在哪个地方抛异常就
throw  new lyException(传一个枚举对象);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值