• utils:一个通用枚举类


    在工作中,以前的枚举类都做的比较简单,直到与公司的一个大佬合作做项目时,看到了一个更加通用且全面的通用枚举类。
    且更符合阿里巴巴的java技术规范,特此记录


    以上引用自阿里巴巴Java开发手册1.4.0

    主要特点如下:

    1. 枚举提供序号、值、注释信息
    2. 提供构造器和get set方法
    3. 提供转换列表的方法,方便业务更好的遍历和使用
    4. 提供使用序号获取注释信息的方法(可更方便的获取解释,便于业务端展示)
    5. 提供使用值获取注释信息的方法(可更方便的获取解释,便于业务端展示)
    6. 同样方式,也可添加其他方法
    import com.google.common.collect.Lists;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public enum EnumTableLayer {
        ODS(1, "ODS", "SERV层"),
        DWD(2, "DWD", "DWD层"),
        DWA(3, "DWA", "DWA层"),
        DM(4, "DM", "DM层"),
        SERV(5, "SERV", "SERV层");
    
        private int codeInt;
        private String codeStr;
        private String msg;
    
    
        EnumTableLayer(int codeInt, String codeStr, String msg) {
            this.codeInt = codeInt;
            this.codeStr = codeStr;
            this.msg = msg;
        }
    
        public int getCodeInt() {
            return codeInt;
        }
    
        public void setCodeInt(int codeInt) {
            this.codeInt = codeInt;
        }
    
        public String getCodeStr() {
            return codeStr;
        }
    
        public void setCodeStr(String codeStr) {
            this.codeStr = codeStr;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        /**
         * 讲枚举转换成list格式,这样前台遍历的时候比较容易,列如 下拉框 后台调用toList方法,就可以得到codeInt,  codeStr和msg
         * @return
         */
        static List getList() {
            // Lists.newArrayList()其实和new ArrayList()几乎一模一样, 唯一它帮你做的(其实是javac帮你做的), 就是自动推导尖括号里的数据类型.
            List list = Lists.newArrayList();
            for (EnumTableLayer enumTableLayer : EnumTableLayer.values()) {
                Map<String, Object> map = new HashMap();
                map.put("codeInt", enumTableLayer.getCodeInt());
                map.put("codeStr", enumTableLayer.getCodeStr());
                map.put("msg", enumTableLayer.getMsg());
                list.add(map);
            }
            return list;
        }
    
        /**
         * 根据codeInt获取msg信息
         * @param codeInt
         * @return
         */
        public static String getMsgByCodeInt(int codeInt){
            String msgInfo = "";
            for (EnumTableLayer enumTableLayer : EnumTableLayer.values()) {
                if(enumTableLayer.getCodeInt() == codeInt){
                    msgInfo = enumTableLayer.getMsg();
                    continue;
                }
            }
            if(ToolUtil.isNotEmpty(msgInfo)){
                return msgInfo;
            } else {
                return String.valueOf(codeInt);
            }
        }
    
        /**
         * 根据codeStr获取msg信息
         * @param codeStr
         * @return
         */
        public static String getMsgByCodeStr(String codeStr){
            String msgInfo = "";
            for (EnumTableLayer enumTableLayer : EnumTableLayer.values()) {
                if(enumTableLayer.getCodeStr().equals(codeStr)){
                    msgInfo = enumTableLayer.getMsg();
                    continue;
                }
            }
            if(ToolUtil.isNotEmpty(msgInfo)){
                return msgInfo;
            } else {
                return codeStr;
            }
        }
    }
    

    其上的ToolUtil工具类,也是手动封装的,基本引用自Apache Commons 等包,故此直接使用Apache-Commons-lang包的isNotEmpty即可

  • 相关阅读:
    nuxt.js 学习与记录
    图片上传预览 接收
    k8s之deployment
    k8s之service
    k8s的一些命令
    ansible 学习
    k8s之ConfigMap && secret
    k8s 之Job/CronJob
    k8s之PV & PVC
    配置ssh免密登录
  • 原文地址:https://www.cnblogs.com/missedyou/p/13308426.html
Copyright © 2020-2023  润新知