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 extends IEnum> T valueOfIgnoreCase(Class<T> clazz, String code) {

        return valueOf(clazz, code, true);
    }

    /**
     * 获取枚举,区分大小写
     * 
     * @param clazz
     * @param code
     * @return
     */
    public static <T extends IEnum> T valueOf(Class<T> clazz, String code) {

        return valueOf(clazz, code, false);
    }

    /**
     * 获取枚举,区分大小写
     * 
     * @param clazz
     * @param code
     * @param ignoreCase
     * @return
     */
    private static <T extends IEnum> T valueOf(Class<T> 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 extends IEnum> T[] values(Class<T> 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值