java enum 转换_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、付费专栏及课程。

余额充值