亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Java枚舉類在生產(chǎn)環(huán)境中的使用方式

 更新時間:2022年02月04日 10:47:42   作者:福隆苑居士  
本文主要介紹了Java枚舉類在生產(chǎn)環(huán)境中的使用方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

  Java枚舉在項目中使用非常普遍,許多人在做項目時,一定會遇到要維護(hù)某些業(yè)務(wù)場景狀態(tài)的時候,往往會定義一個常量類,然后添加業(yè)務(wù)場景相關(guān)的狀態(tài)常量。但實際上,生產(chǎn)環(huán)境的項目中業(yè)務(wù)狀態(tài)的定義大部分是由枚舉類來完成的,因為更加清晰明確,還能自定義不同的方法來獲取對應(yīng)的業(yè)務(wù)狀態(tài)值,十分方便。

以下代碼均為生產(chǎn)環(huán)境已上線項目的代碼片段,僅供參考。

使用

大體分為確定業(yè)務(wù)場景狀態(tài)、定義枚舉類、自定義查詢方法、測試效果等幾個部分。

1、確定業(yè)務(wù)場景狀態(tài)

以我工作中實際的項目為例,智慧醫(yī)院在掛號、門診繳費時需要使用支付功能,我們目前實現(xiàn)了以下幾種支付形式:微信小程序支付、微信H5支付、支付寶小程序支付、支付寶生活號支付、微信醫(yī)保支付。
那么,我們就可以針對這幾種支付形式定義一個枚舉類專門維護(hù),今后需要新增、修改以及刪除時,只需要修改這個枚舉類即可。

2、定義枚舉類

public enum PayTypeEnum {
 
    WEI_XIN_MINI_APP("1", "wxma", "微信小程序支付"),
 
    WEI_XIN_H5("2", "wxh5", "微信H5支付"),
 
    ZFB_MINI_APP("3", "zfbma", "支付寶小程序支付"),
 
    ZFB_H5("4", "zfbh5", "支付寶生活號支付"),
 
    WEI_XIN_MEDICAL("5", "wxmedical", "微信醫(yī)保支付");
 
    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,那么我們使用過程中可能需要根據(jù)id獲取枚舉值、根據(jù)code獲取枚舉值(本人大部分時候都定義的這兩個),甚至根據(jù)label獲取枚舉值,因此可以根據(jù)需要自定義自己的查詢方法。

/**
 * 根據(jù)id獲取枚舉對象
 * @param id 
 */
public static PayTypeEnum findById(String id) {
    for (PayTypeEnum type : PayTypeEnum.values()) {
        if (type.getId().equals(id))
            return type;
    }
    return null;
}
 
/**
 * 根據(jù)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", "wxh5", "微信H5支付"),
 
    ZFB_MINI_APP("3", "zfbma", "支付寶小程序支付"),
 
    ZFB_H5("4", "zfbh5", "支付寶生活號支付"),
 
    WEI_XIN_MEDICAL("5", "wxmedical", "微信醫(yī)保支付");
 
    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;
    }
 
    /**
     * 根據(jù)id獲取枚舉對象
     * @param id 
     */
    public static PayTypeEnum findById(String id) {
        for (PayTypeEnum type : PayTypeEnum.values()) {
            if (type.getId().equals(id))
                return type;
        }
        return null;
    }
 
    /**
     * 根據(jù)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("============= 根據(jù)自定義的查詢方法獲取值 =============");
   System.out.println("根據(jù)id獲取枚舉對象:" + PayTypeEnum.findById("3"));
   System.out.println("根據(jù)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:微信小程序支付
============= 根據(jù)自定義的查詢方法獲取值 =============
根據(jù)id獲取枚舉對象:ZFB_MINI_APP
根據(jù)code獲取枚舉對象:ZFB_MINI_APP
============= 類型有效性檢查 =============
檢查1:
檢查2:無效的支付類型
 
Process finished with exit code 0

總結(jié)

  Java枚舉類的定義,大部分都和業(yè)務(wù)場景有關(guān),但凡是類似于業(yè)務(wù)狀態(tài)值的定義,最好都使用枚舉類,這樣便于維護(hù)和閱讀,但每個工程師和研發(fā)團(tuán)隊的風(fēng)格都是不同的,僅以個人這些年的工作經(jīng)歷而言,往往參與一個項目,到后期會形成大量的枚舉類,而不是大量的常量類,常量類頂多只有一個,太多的話根本無法維護(hù),尤其是人員變更之后,新來的同事對于大量的常量類感到頭疼,但枚舉類卻能清晰的表達(dá)該業(yè)務(wù)的場景及用法。

到此這篇關(guān)于詳解Java枚舉類在生產(chǎn)環(huán)境中的使用方式的文章就介紹到這了,更多相關(guān)Java枚舉類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用java實現(xiàn)百萬級別數(shù)據(jù)導(dǎo)出excel的三種方式

    使用java實現(xiàn)百萬級別數(shù)據(jù)導(dǎo)出excel的三種方式

    這篇文章主要介紹了使用java實現(xiàn)百萬級別數(shù)據(jù)導(dǎo)出excel的三種方式,有些業(yè)務(wù)系統(tǒng)可能動輒涉及到百萬上千萬的數(shù)據(jù),用正常的方法效率就變得很低,今天我們來看看這幾種實現(xiàn)思路
    2023-03-03
  • java登錄驗證碼實現(xiàn)代碼

    java登錄驗證碼實現(xiàn)代碼

    這篇文章介紹了java實現(xiàn)登錄驗證碼:用興趣的同學(xué)可以參考一下
    2013-10-10
  • 快速校驗實體類時,@Valid,@Validated,@NotNull注解無效的解決

    快速校驗實體類時,@Valid,@Validated,@NotNull注解無效的解決

    這篇文章主要介紹了快速校驗實體類時,@Valid,@Validated,@NotNull注解無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java如何實現(xiàn)驗證碼驗證功能

    Java如何實現(xiàn)驗證碼驗證功能

    這篇文章主要教大家如何實現(xiàn)Java驗證碼驗證功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • JAVA十大排序算法之歸并排序詳解

    JAVA十大排序算法之歸并排序詳解

    這篇文章主要介紹了java中的歸并排序,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • mybatis-plus配置日志兩種實現(xiàn)方式

    mybatis-plus配置日志兩種實現(xiàn)方式

    這篇文章主要給大家介紹了關(guān)于mybatis-plus配置日志兩種實現(xiàn)方式的相關(guān)資料,Mybatis-plus集成了日志框架,可以將程序運行時產(chǎn)生的日志進(jìn)行記錄,方便開發(fā)人員進(jìn)行問題排查,需要的朋友可以參考下
    2023-09-09
  • Java操作Zookeeper原理及過程詳解

    Java操作Zookeeper原理及過程詳解

    這篇文章主要介紹了Java操作Zookeeper原理及過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • spring?NamedContextFactory在Fegin配置及使用詳解

    spring?NamedContextFactory在Fegin配置及使用詳解

    在我們?nèi)粘m椖恐校褂肍eignClient實現(xiàn)各系統(tǒng)接口調(diào)用變得更加簡單,?在各個系統(tǒng)集成過程中,難免會遇到某些系統(tǒng)的Client需要特殊的配置、返回讀取等需求。Feign使用NamedContextFactory來為每個Client模塊構(gòu)造單獨的上下文(ApplicationContext)
    2023-11-11
  • Springboot實現(xiàn)WebMvcConfigurer接口定制mvc配置詳解

    Springboot實現(xiàn)WebMvcConfigurer接口定制mvc配置詳解

    這篇文章主要介紹了Springboot實現(xiàn)WebMvcConfigurer接口定制mvc配置詳解,spring?boot拋棄了傳統(tǒng)xml配置文件,通過配置類(標(biāo)注@Configuration的類,@Configuration配置類相當(dāng)于一個xml配置文件)以JavaBean形式進(jìn)行相關(guān)配置,需要的朋友可以參考下
    2023-09-09
  • Java 8中如何獲取參數(shù)名稱的方法示例

    Java 8中如何獲取參數(shù)名稱的方法示例

    這篇文章主要給大家介紹了在Java 8中如何獲取參數(shù)名稱的方法,文中給出了詳細(xì)的介紹和方法示例,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,有需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-01-01

最新評論