自用java枚举类模板

/**
 * 模板枚举
 */
public enum ColorEnum {

    /**
     *
     */
    RED(1, "红色"),
    GREEN(2, "绿色"),
    YELLOW(3, "黄色"),
    ;

    private final Integer index;
    private final String name;

    ColorEnum(Integer index, String name) {
        this.index = index;
        this.name = name;
    }

    public Integer getIndex() {
        return index;
    }

    public String getName() {
        return name;
    }

    private static Map<Integer, Object> map = new HashMap<Integer, Object>();

    static {
        //初始化的时候将枚举缓存到一个map中,方便直接通过index获取对应的枚举
        for (ColorEnum e : ColorEnum.values()) {
            map.put(e.getIndex(), e);
        }
    }

    /**
     * 通过index获取对应的name
     * 如果index为null或者不是有效的index,返回空字符串
     * 否则返回正常对应的值
     * @param index
     * @return
     */
    public static String getName(Integer index) {
        ColorEnum e = get(index);
        return e==null?"":e.getName();
    }

    /**
     * 通过index获取对应的枚举
     * @param index
     * @return
     */
    public static ColorEnum get(Integer index) {
        return  (ColorEnum) map.get(index);
    }

}

这是自用的一种java枚举类的形式,使用map将枚举缓存起来(饿汉模式),方便直接用index来获取对应的枚举以及相关的一些值。

还有另外一种做法是在通过index获取对应枚举的时候,进行遍历枚举的values(懒汉模式),我自己不是很喜欢这么干,感觉每通过index获取一次枚举都要遍历一次values有点浪费资源的感觉,还不如直接用一个map缓存起来。多加一个map应该也消耗不了多少内存(这点我没有进行求证)。

支付宝搜索:344355 领取随机红包

如果文章对您有帮助,欢迎给作者打赏