Enum枚举字典管理

1.工程结构

├─main
│  ├─java
│  │  └─cn.proxx.common.dic
│  │                  │  DicEnumBean.java
│  │                  │  DicEnumPool.java
│  │                  │
│  │                  └─item
│  │                      │  IDicItem.java
│  │                      │
│  │                      └─school
│  │                              StudentEnum.java
│  │
│  └─resources
└─test
    └─java
        └─cn.proxx.common.dic
                            EnumTest.java

2.代码示例

2.1 IDicItem.java 接口限定

package cn.proxx.common.dic.item;

import cn.proxx.common.dic.DicEnumPool;

import java.io.Serializable;

public interface IDicItem<T extends Serializable> {
    default void putDicItem(T code, String text) {
        if (code instanceof String) {
            DicEnumPool.putDictItem(this, (String) code, text);
        } else if (code instanceof Integer) {
            DicEnumPool.putDictItem(this, (Integer) code, text);
        }
    }
}

2.2 DicEnumBean.java 解析类(以空间换复杂度)

package cn.proxx.common.dic;

import java.io.Serializable;

public class DicEnumBean<T extends Serializable> {

    public final T code;

    public final String text;

    public DicEnumBean(T code, String text) {
        this.code = code;
        this.text = text;
    }
}

2.3 DicEnumPool.java 常量池(统一入口操作类)

package cn.proxx.common.dic;

import cn.proxx.common.dic.item.IDicItem;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class DicEnumPool {

    private DicEnumPool() {
    }

    private static final Map<IDicItem, DicEnumBean> dictItemMap = new ConcurrentHashMap<>();

    public static void putDictItem(IDicItem item, String code, String text) {
        dictItemMap.put(item, new DicEnumBean(code, text));
    }

    public static void putDictItem(IDicItem item, Integer code, String text) {
        dictItemMap.put(item, new DicEnumBean(code, text));
    }

    public static DicEnumBean getDictItem(IDicItem iDictItem) {
        return dictItemMap.get(iDictItem);
    }
}

2.4 StudentEnum.java 学生常量类集合(分类管理)

package cn.proxx.common.dic.item.school;

import cn.proxx.common.dic.item.IDicItem;

public class StudentEnum {

    public enum GenderEnum implements IDicItem<Integer> {
        MAN(1, "男"),
        WOMAN(2, "女"),
        OTHERS(3, "其他");

        GenderEnum(Integer code, String text) {
            putDicItem(code, text);
        }

    }

    public enum ClassEnum implements IDicItem<String> {
        MAIN("A", "重点班"),
        CUSTOM("B", "普通班"),
        FISH("C", "杂鱼班");

        ClassEnum(String code, String text) {
            putDicItem(code, text);
        }

    }
}

2.5 EnumTest.java 测试用例(检验成果)

package cn.proxx.common.dic;

import cn.proxx.common.dic.item.school.StudentEnum;
import org.junit.Test;

public class EnumTest {
    @Test
    public void dic() {
        DicEnumBean gender = DicEnumPool.getDictItem(StudentEnum.GenderEnum.MAN);
        System.out.println("Code=" + gender.code);
        System.out.println("Text=" + gender.text);

        DicEnumBean clazz = DicEnumPool.getDictItem(StudentEnum.ClassEnum.FISH);
        System.out.println("Code=" + clazz.code);
        System.out.println("Text=" + clazz.text);
    }
}

/**
控制台输出

Code=1
Text=男
Code=C
Text=杂鱼班

Process finished with exit code 0
**/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值