zoukankan      html  css  js  c++  java
  • java中enum 实现接口

    为什么会有这篇文章呢?日常生活中遇到了一个问题。听我慢慢说来

    场景

    我在组件中封装了一个BaseResultEnum;用来定义返回的错误码和错误信息。

    UNKNOWN_EXCEPTION(500, "未知异常,请联系系统管理员"),
    

    各个业务项目也写了类似的 枚举类。但是再返回的时候,必须xxxResultEnum.code,xxxResultEnum.msg 2个参数进行传递进来。因为枚举不能继承。

    实现

    有一天忽然发现可以枚举可以实现接口。上层定义一个统一的接口不就好了

    public interface IResultCode {
        /**
         * 返回码
         *
         * @return Integer
         */
        Integer getCode();
    
        /**
         * 返回消息
         *
         * @return String
         */
        String getMsg();
    }
    
    

    枚举类

    @Getter
    @AllArgsConstructor
    public enum BaseResultEnum  implements IResultCode {
    
        //========================全局结果枚举==============================//
        /**
         * 未知异常
         */
        UNKNOWN_EXCEPTION(500, "未知异常,请联系系统管理员"),
    
        /**
         * 操作成功
         */
        SUCCESS(200, "操作成功"),
        /**
         * 业务异常
         */
        FAILURE(400, "业务异常"),
        /**
         * 服务未找到
         */
        NOT_FOUND(404, "服务未找到");
    
        //========================具体业务自定义异常==============================//
        // 建议 一个业务模块固定的编码100开始:比如:100001、100002;
    
    
    
        /**
         * 状态码
         */
        final Integer code;
        /**
         * 消息内容
         */
        final String msg;
    }
    
    

    这样的话。业务内就自己定义自己项目内的错误信息就可以

    @Getter
    @AllArgsConstructor
    public enum LearningResultEnum implements IResultCode {
    
        /**
         * 学习未找到
         */
        LEARNING_NOT_FOUND(1001, "该学习未找到");
        /**
         * 状态码
         */
        final Integer code;
        /**
         * 消息内容
         */
        final String msg;
    }
    
    

    具体使用

    throw new LearningException(LearningResultEnum.LEARNING_NOT_FOUND);
    
    // 这里封装了一下 就可以直接接口当作参数
        public BaseException(IResultCode resultEnum) {
            super(resultEnum.getMsg());
            this.msg = resultEnum.getMsg();
            this.code = resultEnum.getCode();
        }
    
  • 相关阅读:
    字符统计(改1)
    结对作业—电梯调度
    第三次作业(字符,单词统计)
    第三周作业二(读程序)
    Visual Studio 2015的安装及单元测试练习
    四则运算改进版
    简单的四则运算(续)
    第二次作业—————暴风影音点评(修改版)
    软件工程学习总结篇
    电梯调度问题之成长总结篇(二)
  • 原文地址:https://www.cnblogs.com/zhenghengbin/p/14930524.html
Copyright © 2011-2022 走看看