博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java enum转换工具类
阅读量:6858 次
发布时间:2019-06-26

本文共 2453 字,大约阅读时间需要 8 分钟。

  hot3.png

通过枚举中定义的code获取对应的枚举对象

1、枚举接口

public interface IEnum {    /**     * 获取编码     *      * @return     */    public String getCode();    /**     * 获取说明     *      * @return     */    public String getDesc();}
2、枚举工具类

public class EnumsUtil {    /**     * 获取枚举     *      * @param clazz     * @param code     * @return     */    public static 
T valueOfIgnoreCase(Class
clazz, String code) { return valueOf(clazz, code, true); } /** * 获取枚举,区分大小写 * * @param clazz * @param code * @return */ public static
T valueOf(Class
clazz, String code) { return valueOf(clazz, code, false); } /** * 获取枚举,区分大小写 * * @param clazz * @param code * @param ignoreCase * @return */ private static
T valueOf(Class
clazz, String code, boolean ignoreCase) { //得到values T[] enums = values(clazz); if (enums == null || enums.length == 0) { return null; } for (T t : enums) { if (ignoreCase && t.getCode().equalsIgnoreCase(code)) { return t; } else if (t.getCode().equals(code)) { return t; } } return null; } /** * 获取枚举集合 * * @param clazz * @return */ public static
T[] values(Class
clazz) { if (!clazz.isEnum()) { throw new IllegalArgumentException("Class[" + clazz + "]不是枚举类型"); } //得到values return clazz.getEnumConstants(); }}
3、定义一个枚举

public enum UserType implements IEnum {    /** 超级管理员 */    SUPER_ADMIN("super_admin", "超级管理员"),    /** 管理员 */    ADMIN("admin", "普通管理员"),    /** 一般用户 */    USER("user", "一般用户");    /** 编码 */    private String code;    /** 说明 */    private String desc;    UserType(String code, String desc) {        this.code = code;        this.desc = desc;    }        @Override    public String getDesc() {        return desc;    }    @Override    public String getCode() {        return code;    }}
4、测试

@Test    public void test_valueOf() {        UserType userType = EnumsUtil.valueOf(UserType.class, "user");        Assert.assertTrue(userType == UserType.USER);    }    @Test    public void test_valueOfIgnoreCase() {        UserType userType = EnumsUtil.valueOfIgnoreCase(UserType.class, "user");        Assert.assertTrue(userType == UserType.USER);    }    @Test    public void test_valueOfNull() {        UserType userType = EnumsUtil.valueOf(UserType.class, "User");        Assert.assertTrue(userType == null);    }

转载于:https://my.oschina.net/wy08/blog/165126

你可能感兴趣的文章
Android图片开发内幕--基础篇
查看>>
LVS DR模式
查看>>
ZooKeeper 的安装 以及配置说明
查看>>
iOS10推送通知(本地&远程)/Swift
查看>>
标准交互及UED、埋点及锚应用、外部调用原则。请教一下哪位大佬知道这三个的应用?求助...
查看>>
浅入深谈:一道Python面试题,让我明白了殊途同归,却开始怀疑自己
查看>>
内存时序对应的4个参数你们知道吗?ICMAX一文让你看懂
查看>>
我的U盘故事2
查看>>
《窃听风暴》影评
查看>>
linux下磁盘分区(初级篇)
查看>>
流媒体开发之--HLS--M3U8解析(2): HLS草案
查看>>
mysql大小写规则校验
查看>>
LINUX下find命令小记
查看>>
gulp es5语法转换及js/css/html压缩过程
查看>>
mapreduce框架的工作原理图
查看>>
我的友情链接
查看>>
马拉松训练讲座记录
查看>>
对《windowsXP网桥设置》一文的看法
查看>>
004-Python内置数据结构-七种数据结构一览
查看>>
分享30套免费的高质量网页按钮素材
查看>>