关于枚举的简单使用

1:可以省去多余的 if else if判断,获取到一个状态值(enumState)后,返回相应的状态码![这个和下面的差不多]

在这里插入图片描述

public enum PayChannelEnum {
    ALIPAY("alipay","支付宝"),
    WXPAY("wxpay", "微信"),
    UNIONPAY("unionpay", "银联"),
    CHINAPAY("chinapay", "通联"),
    YSF("ysf", "云闪付"),
    WXSIGN("wx_sign", "微信签约"),
    ALISIGN("ali_sign", "支付宝"),
    WXPAY_SIGN("wxpay_sign", "微信"),
    ALIPAY_SIGN("alipay_sign", "支付宝"),
    UNIONPAY_THREE("3", "银联"),
    ALIPAY_ONE("1", "支付宝"),
    WXPAY_FOUR("4", "微信"),
    ;
    private String  typeName;
    private String  name;

    private PayChannelEnum(String typeName,  String  name) {
        this.typeName = typeName;
        this.name = name ;
    }


    public String getTypeName() {
        return typeName;
    }

    public String getName() {
        return name;
    }

    public static PayChannelEnum getEnumByTypeName(String typeName) {
        PayChannelEnum[] ens = values();
        PayChannelEnum[] var2 = ens;
        int var3 = ens.length;

        for(int var4 = 0; var4 < var3; ++var4) {
            PayChannelEnum en = var2[var4];
            if (en.typeName.equals(typeName)) {
                return en;
            }
        }

        return null;
    }

//好像这个也行,可以试试
    public static PayChannelEnum getEnumByValue(String code) {
        PayChannelEnum [] ens = PayChannelEnum .values();
        for (OrderClassifyEnum en : ens) {
            if (en.getCode().equals(code)) {
                return en;
            }
        }
        return null;
    }
}
//使用
public static void main(String[] args) {

        String enumState = "1";
        String payMode = Optional.ofNullable(PayChannelEnum.getEnumByTypeName(enumState))
                .map(PayChannelEnum::getName).orElse("此处可以return默认值或 null");

        System.out.println(payMode);
    }

2:简单枚举之布尔值

public enum BooleanEnum {
    Y,
    N;

//    public static BooleanEnum create(boolean param) {
//        if (param) {
//            return Y;
//        }
//        return N;
//    }

//使用
    public static void main(String[] args) {
        String nameY = BooleanEnum.Y.name();
        String nameN = BooleanEnum.N.name();
        System.out.println(nameY);
        System.out.println(nameN);
    }
}

3:获取枚举对应的code或者name

public enum NotifyTypeEnum {
    API_SX_POLICY("1", "投保通知"),
    API_SX_ENDORSE("3", "退保通知"),
    API_SX_RENEW("4", "续保通知");

    private String code;
    private String name;

    public String getCode() {
        return this.code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private NotifyTypeEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }
}
//使用
String code = NotifyTypeEnum.API_SX_POLICY.getCode();

4: 题目1的另一种写法

package com.zhongan.core.ibroker.constants;

import java.util.HashMap;
import java.util.Map;

public enum CertificateTypeEnum {
    /**
     * 证件类型 I:身份证 P:护照 B:出生证 D:驾照 M:军官证 Q:其他
     * 
     * @author dingwang
     * @Description 2015/09/09新增港澳居民来往内地通行证和台胞证,<link>不支持的证件类型编号(邮件)</link>
     */

    /** ############################ 个人有效证件 ############################ */
    I(1, "I", "身份证", "person"),
    H(16, "H", "户口簿", "person"),
    M(5, "M", "军人身份证", "person"),
    PL(21, "PL", "武装警察身份证", "person"),
    P(2, "P", "护照", "person"),
    GJ(22, "GJ", "港澳居民来往内地通行证", "person"),
    TB(23, "TB", "台湾居民来往内地通行证", "person"),

    /** ########################### 个人其他证件 ############################ */
    B(3, "B", "出生证", "person"),
    D(4, "D", "驾照", "person"),
    GT(10, "GT", "港台同胞证", "person"),
    S(11, "S", "士兵证", "person"),
    GA(14, "GA", "港澳通行证", "person"),
    TW(15, "TW", "台湾通行证", "person"),
    X(17, "X", "学生证", "person"),
    G(18, "G", "国际海员证", "person"),
    J(19, "J", "外国人永久居留证", "person"),
    LX(20, "LX", "旅行证", "person"),
    C(25, "C", "渠道用户号", "person"),
    WC(26, "WC", "微信号", "person"),

    TWI(27, "TWI", "台湾身份证", "person"),
    BIR(28, "BIR", "澳门居民身份证", "person"),
    HKI(29, "HKI", "香港身份证", "person"),
    FI(30, "FI", "外国人永久居留身份证", "person"),

    /** ############################ 公司有效证件 ########################### */
    T(7, "T", "税务登记证", "company"),
    L(8, "L", "营业执照", "company"),
    O(9, "O", "组织机构证", "company"),
    TY(24, "TY", "统一社会信用代码", "company");

    private static Map<Integer, CertificateTypeEnum> valueMap;
    private static Map<String, CertificateTypeEnum>  codeMap;
    private static Map<String, CertificateTypeEnum>  nameMap;

    private int                                      value;
    private String                                   code;
    private String                                   name;
    private String                                   typeName;

    private CertificateTypeEnum(int value, String code, String name, String typeName) {
        this.value = value;
        this.code = code;
        this.name = name;
        this.typeName = typeName;
    }

    public int getValue() {
        return value;
    }

    public String getName() {
        return name;
    }

    public String getCode() {
        return code;
    }

    public String getTypeName() {
        return typeName;
    }

    static {
        valueMap = new HashMap<Integer, CertificateTypeEnum>();
        codeMap = new HashMap<String, CertificateTypeEnum>();
        nameMap = new HashMap<String, CertificateTypeEnum>();

        for (CertificateTypeEnum an : CertificateTypeEnum.values()) {
            valueMap.put(an.getValue(), an);
            codeMap.put(an.getCode(), an);
            nameMap.put(an.getName(), an);
        }
    }

    /**
     * 根据value获取枚举
     * 
     * @param value
     * @return
     */
    public static CertificateTypeEnum getCertificateTypeByValue(int value) {
        return valueMap.get(value);
    }

    /**
     * 根据code获取枚举
     * 
     * @param code
     * @return
     */
    public static CertificateTypeEnum getCertificateTypeByCode(String code) {
        return codeMap.get(code);
    }

    /**
     * 根据name获取枚举
     * 
     * @param name
     * @return
     */
    public static CertificateTypeEnum getCertificateTypeByName(String name) {
        return nameMap.get(name);
    }
}

//用法
    public static void main(String[] args) {
        //根据value获取name
        String str = "2";
        int num = Integer.parseInt(str);
        String name = StringUtils.isNotBlank(str) ? CertificateTypeEnum.getCertificateTypeByValue(num).getName() : " ";
        // System.out.println(name 护照);

        //根据code获取name获取value
        String strName = "户口簿";
        String value = CertificateTypeEnum.getCertificateTypeByName(strName).getValue() + "";
        System.out.println(value);

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值