java 枚举常用方法

1,代码


import java.util.Map;

public enum ResponseEnum {

    /**
     *  成功返回
     * */
    SUCCEED(0, "成功"),
    FAIL(1, "失败"),
    UNKNOWN(1001, "未知错误"),

    ;

    private final Integer code;

    private final String description;

    private static Map<String, ResponseEnum> messageMap;

    public Integer getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    //构造函数
    ResponseEnum(Integer code, String description) {
        this.code = code;
        this.description = description;
    }

    //根据code获取desc
    public static String getDescByCode(int code) {
        for (ResponseEnum value : values()) {
            if (value.getCode() == code) {
                return value.getDescription();
            }
        }
        throw new IllegalArgumentException("Unable to parse the provided code " + code);
    }

    //根据code获取desc
    public static int getCodeByDesc(String desc) {
        for (ResponseEnum value : values()) {
            if (value.getDescription() == desc) {
                return value.getCode();
            }
        }
        throw new IllegalArgumentException("Unable to parse the provided desc " + desc);
    }

    //根据code返回枚举类型
    public static ResponseEnum getEnumByCode(Integer code){
        for (ResponseEnum responseEnum : values()){
            if(responseEnum.getCode().equals(code)){
                return responseEnum;
            }
        }
        return null;
    }

    //根据desc获取枚举对象
    public static ResponseEnum getEnumByDesc(String desc){
        for (ResponseEnum responseEnum : values()){
            if(responseEnum.getDescription().equals(desc)){
                return responseEnum;
            }
        }
        return null;
    }

//    //根据desc获取枚举对象
//    public static <T extends ResponseEnum> T getEnumByDesc(Class<T> clazz, String desc) {
//        for(T inner : clazz.getEnumConstants())
//            if(inner.getDescription().equals(desc))
//                return inner;
//        return null;
//    }
//
//    //根据code获取枚举对象
//    public static <T extends ResponseEnum> T getEnumByCode(Class<T> clazz, Integer code) {
//        for(T inner : clazz.getEnumConstants())
//            if(inner.getCode().equals(code))
//                return inner;
//        return null;
//    }

//    public static ResponseEnum messageOf(String message) {
//        if (messageMap == null) {
//            messageMap = Arrays.stream(ResponseEnum.values()).collect(Collectors.toMap(ResponseEnum::getDescription, e -> e));
//        }
//        return messageMap.getOrDefault(message, UNKNOWN);
//    }

}

//此处对后端抛出的异常做国际化处理
/**
} catch (Exception e) {
    ImportTemplateDTO importDTO = cacheDto.get(dto.getRowIndex());
     //某个异常的枚举对象,如传入“成功”,则responseEnum为SUCCEED
     ResponseEnum responseEnum = ResponseEnum.getEnumByDesc(ResponseEnum.class,e.getLocalizedMessage());
     importDTO.setFailReason(messageConfig.storageStr(responseEnum.name()));
     ResponseEnum.getEnumByDesc(ResponseEnum.class,e.getLocalizedMessage());
     errorList.add(importDTO);
     iterator.remove();
     log.error(e.getLocalizedMessage());
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值