• 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即可

  • 相关阅读:
    iOS推送证书从申请到使用
    leetcode
    C++測量一段代码的执行时时间
    UIView的几个枚举定义
    在CDialog::OnInitDialog设置DEFAULT-BUTTON的注意事项
    转:VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
    COM学习笔记
    关于StdAfx.h和StdAfx.cpp
    解决:CWnd::SetWindowText报Assertion failure
    四种DLL:NON-MFC DLL, Regular DLL Statically/Dynamically Linked to MFC, MFC Extension DLL
  • 原文地址:https://www.cnblogs.com/missedyou/p/13308426.html
Copyright © 2020-2023  润新知