码迷,mamicode.com
首页 > 其他好文 > 详细

utils:一个通用枚举类

时间:2020-07-16 00:19:58      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:shm   array   class   mic   utils   其他   规范   common   看到了   

在工作中,以前的枚举类都做的比较简单,直到与公司的一个大佬合作做项目时,看到了一个更加通用且全面的通用枚举类。
且更符合阿里巴巴的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即可

utils:一个通用枚举类

标签:shm   array   class   mic   utils   其他   规范   common   看到了   

原文地址:https://www.cnblogs.com/missedyou/p/13308426.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!