枚举的使用

    科技2022-08-20  105

    枚举的使用

    枚举相当于一个数据库,性能要比数据库好的多,不用建立连接释放连接之类的。 枚举的应用场景,比如我想定义一个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(传一个枚举对象);
    Processed: 0.024, SQL: 9