javaenum转换_javaenum转换⼯具类通过枚举中定义的code获取对应的枚举对象
1、枚举接⼝
public interface IEnum {
/**
* 获取编码
*
* @return
*/
public String getCode();
/**
* 获取说明
*
* @return
*/
public String getDesc();
}
2、枚举⼯具类
public class EnumsUtil {
/**
* 获取枚举
*
* @param clazz
enum c++
* @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
EnumConstants();
}
}
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.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);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论