枚举转换 java_java enum转换工具类

通过枚举中定义的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); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值