Java根據(jù)key獲取枚舉值的操作方法
前言
Hutool 是一個(gè)小而全的Java工具類庫(kù),通過(guò)靜態(tài)方法封裝,降低相關(guān)API的學(xué)習(xí)成本,提高工作效率,使Java擁有函數(shù)式語(yǔ)言般的優(yōu)雅,讓Java語(yǔ)言也可以“甜甜的”。
官網(wǎng):https://www.hutool.cn/
推薦說(shuō)明
枚舉(enum)算一種“語(yǔ)法糖”,是指一個(gè)經(jīng)過(guò)排序的、被打包成一個(gè)單一實(shí)體的項(xiàng)列表。一個(gè)枚舉的實(shí)例可以使用枚舉項(xiàng)列表中任意單一項(xiàng)的值。枚舉在各個(gè)語(yǔ)言當(dāng)中都有著廣泛的應(yīng)用,通常用來(lái)表示諸如顏色、方式、類別、狀態(tài)等等數(shù)目有限、形式離散、表達(dá)又極為明確的量。Java從JDK5開(kāi)始,引入了對(duì)枚舉的支持。
EnumUtil 用于對(duì)未知枚舉類型進(jìn)行操作。
最佳實(shí)踐
引入pom
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <!-- 請(qǐng)查看最新版本 https://mvnrepository.com/artifact/cn.hutool/hutool-all --> <version>5.8.26</version> </dependency>
方法
首先我們定義一個(gè)枚舉對(duì)象:
//定義枚舉 public enum TestEnum{ TEST1("type1"), TEST2("type2"), TEST3("type3"); private TestEnum(String type) { this.type = type; } private String type; public String getType() { return this.type; } }
getNames
獲取枚舉類中所有枚舉對(duì)象的name列表。栗子:
List<String> names = EnumUtil.getNames(TestEnum.class); //結(jié)果:[TEST1, TEST2, TEST3]
getBy
根據(jù)傳入lambda和值獲得對(duì)應(yīng)枚舉。栗子:
TestEnum testEnum = EnumUtil.getBy(TestEnum::ordinal, 1); //結(jié)果:TEST2
getFieldBy
根據(jù)傳入lambda和值獲得對(duì)應(yīng)枚舉的值。栗子:
String type = EnumUtil.getFieldBy(TestEnum::getType, Enum::ordinal, 1); // 結(jié)果:“type2”
getEnumMap
獲取枚舉字符串值和枚舉對(duì)象的Map對(duì)應(yīng),使用LinkedHashMap保證有序,結(jié)果中鍵為枚舉名,值為枚舉對(duì)象。栗子:
Map<String,TestEnum> enumMap = EnumUtil.getEnumMap(TestEnum.class); enumMap.get("TEST1") // 結(jié)果為:TestEnum.TEST1
getNameFieldMap
獲得枚舉名對(duì)應(yīng)指定字段值的Map,鍵為枚舉名,值為字段值。栗子:
Map<String, Object> enumMap = EnumUtil.getNameFieldMap(TestEnum.class, "type"); enumMap.get("TEST1") // 結(jié)果為:type1
寫在最后
到此這篇關(guān)于Java根據(jù)key獲取枚舉值的操作方法的文章就介紹到這了,更多相關(guān)Java根據(jù)key獲取枚舉值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java用戶交互scanner及運(yùn)算結(jié)構(gòu)代碼詳解
這篇文章主要介紹了Java用戶交互scanner及運(yùn)算結(jié)構(gòu)代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12fastJson泛型如何轉(zhuǎn)換的實(shí)現(xiàn)
這篇文章主要介紹了fastJson泛型如何轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11springboot對(duì)數(shù)據(jù)庫(kù)密碼加密的實(shí)現(xiàn)
這篇文章主要介紹了springboot對(duì)數(shù)據(jù)庫(kù)密碼加密的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12應(yīng)用啟動(dòng)數(shù)據(jù)初始化接口CommandLineRunner和Application詳解
這篇文章主要介紹了應(yīng)用啟動(dòng)數(shù)據(jù)初始化接口CommandLineRunner和Application詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Java實(shí)現(xiàn)簡(jiǎn)單碰撞檢測(cè)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單碰撞檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理
這篇文章主要介紹了SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09IDEA中使用Docker Compose容器編排的實(shí)現(xiàn)
這篇文章主要介紹了IDEA中使用Docker Compose容器編排的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07