zoukankan      html  css  js  c++  java
  • 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即可

  • 相关阅读:
    平台建设-用户反馈跟踪模块(简单爬虫)
    Android Send event 汇总 (点击,滑动,两指操作 源码)
    uiautomator 获取控件,点击的原理
    自动化进程调用CommomService获取androidapi功能
    大快搜索“大数据与智慧城市”南京技术交流会成功举办
    系统架构都经历了怎样的演变?
    云计算的云数据安全与加密技术
    从服务端视角看高并发难题
    动态分配多任务资源的移动端深度学习框架
    详谈分布式系统缓存的设计细节
  • 原文地址:https://www.cnblogs.com/missedyou/p/13308426.html
Copyright © 2011-2022 走看看