76.安心技术梳理 - java开发中枚举类的创建使用,干货

开发中枚举类的使用是狠广泛的,下面是常见的创建类型,仅供参考

1.普通枚举

public enum OrderStatusEnum {
    WAIT_STATUS,
    OVER_STATUS;
}

2.键值对枚举(含二进制表示方式)

import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
public enum UserClassifyEnum {
    ALL(1, "全站"),
    BRAND(2, "新人");
    private int binaryNo;
    private String name;
    UserClassifyEnum(int binaryNo, String name) {
        this.name = name;
        this.binaryNo = binaryNo;
    }
    public String getName() {
        return name;
    }
    public int getBinaryNo() {
        return binaryNo;
    }
    //默认选项
    private static final String[] DEFAULT = new String[]{"全站","新人"};
    //由List转为二进制表示
    public static String transform(List<String> userClassifyList) {
        //默认全都不选择
        String[] result = new String[]{"0","0","0","0","0"};
        if (null == userClassifyList || userClassifyList.isEmpty()) {
            return StringUtils.join(result);
        }
        for (int i = 0; i < DEFAULT.length; i++) {
            if (userClassifyList.contains(DEFAULT[i])) {
                //如果有选择,则值改为1
                result[i] = "1";
            }
        }
        return StringUtils.join(result);
    }
    //由十进制转为List表示
    public static List<String> transformStringToList(String value) {
        if (StringUtils.isEmpty(value)) {
            return null;
        }
        List<String> result = new ArrayList<String>();
        String binaryValue = Integer.toBinaryString(Integer.parseInt(value));
        String temp = new StringBuilder(binaryValue).reverse().toString();
        char[] chars = temp.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == '1') {
                result.add(DEFAULT[i]);
            }
        }
        return result;
    }
}

二进制获取值是否选中判定,通过与运算比较

private Boolean checkCardVerify(DataInfo dataInfo) {
        Integer userClass = dataInfo.getUserClassify();
        int newUser = UserClassifyEnum.NEW_USER.getBinaryNo();
        if ((userClass & newUser) == newUser) {
            //与运算比较为true,标识选中
        }
}

3.键值对枚举,多值(含二进制表示方式)

import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
public enum JdValueRangeEnum {
    FIRST_STAGE(2, 201, 4999),
    SECOND_STAGE(4, 5000, 9999);
    private int binaryNo;
    private double minValue;
    private double maxValue;
    JdValueRangeEnum(int binaryNo, double minValue, double maxValue) {
        this.binaryNo = binaryNo;
        this.minValue = minValue;
        this.maxValue = maxValue;
    }
    public int getBinaryNo() {
        return binaryNo;
    }
    public double getMinValue() {
        return minValue;
    }
    public double getMaxValue() {
        return maxValue;
    }
    //默认的京享值选项
    private static final String[] DEFAULT_RANGE_ARR = new String[]{"[201,+)","[201,4999]","[5000,9999]","[10000,19999]","[20000,+)"};
    //由List转为二进制表示
    public static String transformListToString(List<String> rangeList) {
        //默认全都不选择
        String[] result = new String[]{"0","0","0","0","0"};
        if (null == rangeList || rangeList.isEmpty()) {
            return StringUtils.join(result);
        }
        String rangeStr = StringUtils.join(rangeList,";").replaceAll("\\s+", "");
        for (int i = 0; i < DEFAULT_RANGE_ARR.length; i++) {
            if (rangeStr.contains(DEFAULT_RANGE_ARR[i])) {
                //如果有选择,则值改为1
                result[i] = "1";
            }
        }
        return StringUtils.join(result);
    }
    //由十进制转为List表示
    public static List<String> transformStringToList(String value) {
        if (StringUtils.isEmpty(value)) {
            return null;
        }
        List<String> result = new ArrayList<String>();
        String binaryValue = Integer.toBinaryString(Integer.parseInt(value));
        String temp = new StringBuilder(binaryValue).reverse().toString();
        char[] chars = temp.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == '1') {
                result.add(DEFAULT_RANGE_ARR[i]);
            }
        }
        return result;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值