Java中枚舉類型的一種使用方式
今天改同事的代碼發(fā)現(xiàn)同事的代碼中有大量的if else語(yǔ)句。很不美觀而且可讀性太差。
因?yàn)樾枰o前端一個(gè)key,value的列表。這個(gè)列表寫死。然而同事的代碼。
放幾張圖,大家自己感受。我都不知道以后這個(gè)api咋維護(hù),新增一個(gè)工站,減少一個(gè)工站。
果然新的任務(wù)新增4個(gè)工站,好吧,開(kāi)始給代碼裝扮一下。
首先,寫一個(gè)枚舉類。
package com.smartflow.common.enumpackage; /** * @author :tao * @date :Created in 2020/8/1 22:51 * @description:${description} */ public enum StationEnum { /** * */ STATION_PRODUCTION(1,"生產(chǎn)工站"), STATION_TEST(2,"測(cè)試工站"), STATION_FIX(3,"維修工站"), STATION_VIRTUAL(4,"虛擬工站"), STATION_MATERIAL(5,"上料工站"), STATION_CRASH(6,"清洗工站"), STATION_PAK(7,"配送工站"); private final int key; private final String value; StationEnum(int key, String value) { this.key = key; this.value = value; } public int getKey() { return key; } public String getValue() { return value; } }
然后這個(gè)是獲取工站的列表,看吧你幾乎看不到重復(fù)的new map,或者是魔法值。對(duì)比一下上邊的是不是很美觀。
/** *獲取工站類型列表 * @return 工站類型列表 */ private List<Map<String,Object>>getStationTypeList() { List<Map<String, Object>> stationTypeList = new ArrayList<>(); for (StationEnum stationEnum:StationEnum.values()) { Map<String, Object> stationType = new HashMap<>(2); stationType.put("key", stationEnum.getKey()); stationType.put("label", stationEnum.getValue()); stationTypeList.add(stationType); } return stationTypeList; }
接著根據(jù)工站id也就是key查找工站名
/** * 根據(jù)key值查找工站名 * @param key key值 * @return 返回攻占名 */ private String getStationLabel(int key) { for (StationEnum stationEnum:StationEnum.values()) { if (stationEnum.getKey()==key) { return stationEnum.getValue(); } } return "測(cè)試工站"; }
可以看到幾行代碼就搞定了。而且代碼重用性高,可維護(hù)性好。想添加工站或者減少工站直接在枚舉類型中改變就可以了。不用修改大量的代碼。
到此這篇關(guān)于Java中枚舉類型的一種使用方式的文章就介紹到這了,更多相關(guān)Java中枚舉類型使用方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud Feign參數(shù)問(wèn)題及解決方法
這篇文章主要介紹了SpringCloud Feign參數(shù)問(wèn)題及解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12SpringMVC在多線程下請(qǐng)求頭獲取失敗問(wèn)題的解決方案
這篇文章主要介紹了我們就對(duì)多線程環(huán)境下使用SpringMVC中RequestContextHolder無(wú)法獲取請(qǐng)求的問(wèn)題進(jìn)行了深入的分析,并針對(duì)相關(guān)問(wèn)題給出了相應(yīng)的解決方案,需要的朋友可以參考下2024-08-08springboot在filter中如何用threadlocal存放用戶身份信息
這篇文章主要介紹了springboot中在filter中如何用threadlocal存放用戶身份信息,本文章主要描述通過(guò)springboot的filter類,在過(guò)濾器中設(shè)置jwt信息進(jìn)行身份信息保存的方法,需要的朋友可以參考下2024-07-07java中創(chuàng)建寫入文件的6種方式詳解與源碼實(shí)例
這篇文章主要介紹了java中創(chuàng)建寫入文件的6種方式詳解與源碼實(shí)例,Files.newBufferedWriter(Java 8),Files.write(Java 7 推薦),PrintWriter,File.createNewFile,FileOutputStream.write(byte[] b) 管道流,需要的朋友可以參考下2022-12-12SpringBoot、mybatis返回樹(shù)結(jié)構(gòu)的數(shù)據(jù)實(shí)現(xiàn)
本文主要介紹了SpringBoot、mybatis返回樹(shù)結(jié)構(gòu)的數(shù)據(jù)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Java實(shí)現(xiàn)簡(jiǎn)易HashMap功能詳解
這篇文章主要介紹了Java實(shí)現(xiàn)簡(jiǎn)易HashMap功能,結(jié)合實(shí)例形式詳細(xì)分析了Java實(shí)現(xiàn)HashMap功能相關(guān)原理、操作步驟與注意事項(xiàng),需要的朋友可以參考下2020-05-05