您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java枚舉類在生產環境中怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java枚舉類在生產環境中怎么使用”吧!
大體分為確定業務場景狀態、定義枚舉類、自定義查詢方法、測試效果等幾個部分。
以我工作中實際的項目為例,智慧醫院在掛號、門診繳費時需要使用支付功能,我們目前實現了以下幾種支付形式:微信小程序支付、微信H5支付、支付寶小程序支付、支付寶生活號支付、微信醫保支付。
那么,我們就可以針對這幾種支付形式定義一個枚舉類專門維護,今后需要新增、修改以及刪除時,只需要修改這個枚舉類即可。
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、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", "無效的支付類型"); } }
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枚舉類在生產環境中怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。