Java枚举类在生产环境中怎么使用

发布时间:2022-02-07 10:13:30 作者:iii
来源:亿速云 阅读:109

这篇文章主要讲解了“Java枚举类在生产环境中怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java枚举类在生产环境中怎么使用”吧!

使用

大体分为确定业务场景状态、定义枚举类、自定义查询方法、测试效果等几个部分。

1、确定业务场景状态

以我工作中实际的项目为例,智慧医院在挂号、门诊缴费时需要使用支付功能,我们目前实现了以下几种支付形式:微信小程序支付、微信H5支付、支付宝小程序支付、支付宝生活号支付、微信医保支付。
那么,我们就可以针对这几种支付形式定义一个枚举类专门维护,今后需要新增、修改以及删除时,只需要修改这个枚举类即可。

2、定义枚举类

public enum PayTypeEnum {
 
    WEI_XIN_MINI_APP("1", "wxma", "微信小程序支付"),
 
    WEI_XIN_H5("2", "wxh6", "微信H5支付"),
 
    ZFB_MINI_APP("3", "zfbma", "支付宝小程序支付"),
 
    ZFB_H5("4", "zfbh6", "支付宝生活号支付"),
 
    WEI_XIN_MEDICAL("5", "wxmedical", "微信医保支付");
 
    private final String id;
    private final String code;
    private final String label;
 
    PayTypeEnum(final String id, final String code, final String label) {
        this.id = id;
        this.code = code;
        this.label = label;
    }
 
    public String getId() {
        return id;
    }
 
    public String getCode() {
        return code;
    }
 
    public String getLabel() {
        return label;
    }
 
}

3、自定义查询方法

枚举类我们定义了id、code、label,那么我们使用过程中可能需要根据id获取枚举值、根据code获取枚举值(本人大部分时候都定义的这两个),甚至根据label获取枚举值,因此可以根据需要自定义自己的查询方法。

/**
 * 根据id获取枚举对象
 * @param id 
 */
public static PayTypeEnum findById(String id) {
    for (PayTypeEnum type : PayTypeEnum.values()) {
        if (type.getId().equals(id))
            return type;
    }
    return null;
}
 
/**
 * 根据code获取枚举对象
 * @param code 
 */
public static PayTypeEnum findByCode(String code) {
    for (PayTypeEnum type : PayTypeEnum.values()) {
        if (type.getCode().equals(code))
            return type;
    }
    return null;
}

为了更完善,我们还可以再定义一个检查枚举类型的方法。

/**
 * 检查支付类型是否有效
 * @param id 
 */
public static void check(String id) {
    if (StringUtils.isEmpty(id)) {
        throw new BadRequestAlertException("无效的支付类型", "PayTypeEnum", "无效的支付类型");
    }
    for (PayTypeEnum type : PayTypeEnum.values()) {
        if (type.getId().equals(id)) {
            return;
        }
    }
    throw new BadRequestAlertException("无效的支付类型", "PayTypeEnum", "无效的支付类型");
}

最终代码如下:

import com.web.rest.errors.BadRequestAlertException;
import org.springframework.util.StringUtils;
 
public enum PayTypeEnum {
 
    WEI_XIN_MINI_APP("1", "wxma", "微信小程序支付"),
 
    WEI_XIN_H5("2", "wxh6", "微信H5支付"),
 
    ZFB_MINI_APP("3", "zfbma", "支付宝小程序支付"),
 
    ZFB_H5("4", "zfbh6", "支付宝生活号支付"),
 
    WEI_XIN_MEDICAL("5", "wxmedical", "微信医保支付");
 
    private final String id;
    private final String code;
    private final String label;
 
    PayTypeEnum(final String id, final String code, final String label) {
        this.id = id;
        this.code = code;
        this.label = label;
    }
 
    public String getId() {
        return id;
    }
 
    public String getCode() {
        return code;
    }
 
    public String getLabel() {
        return label;
    }
 
    /**
     * 根据id获取枚举对象
     * @param id 
     */
    public static PayTypeEnum findById(String id) {
        for (PayTypeEnum type : PayTypeEnum.values()) {
            if (type.getId().equals(id))
                return type;
        }
        return null;
    }
 
    /**
     * 根据code获取枚举对象
     * @param code
     */
    public static PayTypeEnum findByCode(String code) {
        for (PayTypeEnum type : PayTypeEnum.values()) {
            if (type.getCode().equals(code))
                return type;
        }
        return null;
    }
 
    /**
     * 检查支付类型是否有效
     * @param id 
     */
    public static void check(String id) {
        if (StringUtils.isEmpty(id)) {
            throw new BadRequestAlertException("无效的支付类型", "PayTypeEnum", "无效的支付类型");
        }
        for (PayTypeEnum type : PayTypeEnum.values()) {
            if (type.getId().equals(id)) {
                return;
            }
        }
        throw new BadRequestAlertException("无效的支付类型", "PayTypeEnum", "无效的支付类型");
    }
 
}

4、测试效果

public static void main(String[] args) {
 
   System.out.println("============= 获取枚举类的值 =============");
   System.out.println("获取id:" + PayTypeEnum.WEI_XIN_MINI_APP.getId());
   System.out.println("获取code:" + PayTypeEnum.WEI_XIN_MINI_APP.getCode());
   System.out.println("获取label:" + PayTypeEnum.WEI_XIN_MINI_APP.getLabel());
 
 
   System.out.println("============= 根据自定义的查询方法获取值 =============");
   System.out.println("根据id获取枚举对象:" + PayTypeEnum.findById("3"));
   System.out.println("根据code获取枚举对象:" + PayTypeEnum.findByCode("zfbma"));
 
 
   System.out.println("============= 类型有效性检查 =============");
   System.out.print("检查1:");
   PayTypeEnum.check("1");
   System.out.println();
   System.out.print("检查2:");
   PayTypeEnum.check("999");
}

打印如下:

============= 获取枚举类的值 =============
获取id:1
获取code:wxma
获取label:微信小程序支付
============= 根据自定义的查询方法获取值 =============
根据id获取枚举对象:ZFB_MINI_APP
根据code获取枚举对象:ZFB_MINI_APP
============= 类型有效性检查 =============
检查1:
检查2:无效的支付类型
 
Process finished with exit code 0

感谢各位的阅读,以上就是“Java枚举类在生产环境中怎么使用”的内容了,经过本文的学习后,相信大家对Java枚举类在生产环境中怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. java中的能否继承枚举类
  2. java枚举类的使用介绍

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Matplotlib的bins和rwidth参数怎么实现

下一篇:Java怎么实现通过值查找对应的枚举

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》