Java如何獲取枚舉類型的值
Java獲取枚舉類型的值
枚舉類
public enum EasyExcelStyleType { ? ? NONE("默認(rèn)樣式", ExcelExportStylerDefaultImpl.class), ? ? BORDER("邊框樣式", ExcelExportStylerBorderImpl.class), ? ? COLOR("間隔行樣式", ExcelExportStylerColorImpl.class), ? ? ONE("自定義樣式一", EasyExcelStyle.class); ? ? EasyExcelStyleType(String str, Class<?> cla) { ? ? ?? ?// 傳遞屬性值 ? ? ? ? this.str = str; ? ? ? ? this.cla = cla; ? ? } ?? ?// 屬性Getter,Setter方法 ? ? private String str; ? ? private Class<?> cla; ? ? public String getStr() { ? ? ? ? return str; ? ? } ? ? public void setStr(String str) { ? ? ? ? this.str = str; ? ? } ? ? public Class<?> getCla() { ? ? ? ? return cla; ? ? } ? ? public void setCla(Class<?> cla) { ? ? ? ? this.cla = cla; ? ? } }
獲取方法
public static void main(String[] args) throws Exception { ? ? ? ? // 獲取屬性一(str) ? ? ? ? System.out.println(EasyExcelStyleType.valueOf("ONE").getStr()); ? ? ? ? System.out.println(EasyExcelStyleType.ONE.getStr()); ? ? ? ? // 獲取屬性二(cla) ? ? ? ? System.out.println(EasyExcelStyleType.valueOf("ONE").getCla()); ? ? ? ? System.out.println(EasyExcelStyleType.ONE.getCla()); ? ? }
輸出
java反射獲取枚舉值
先說下枚舉類的結(jié)構(gòu):
枚舉類中有許多枚舉常量,枚舉常量由枚舉類中各個(gè)字段組成,更確切的說,枚舉常量由構(gòu)造方法入?yún)⒆侄螛?gòu)成。
所以如果要獲取枚舉常量中的值,首先需要使用class的getEnumConstants()方法獲取枚舉類中所有的枚舉常量,然后使用類中對應(yīng)的方法,得到常量中包含字段的值。
代碼如下:
枚舉類代碼示例
package com.ecarx.jsk.jdk.poi; public enum ResultCode { ? ? CODE_5200("8200", "認(rèn)證失敗"), ? ? CODE_5201("8201", "用戶不存在"), ? ? CODE_5202("8202", "Token驗(yàn)證失敗"), ? ? CODE_5203("8203", "Token刷新失敗"); ? ? private String code; ? ? private String name; ? ? private ResultCode(String code, String name) { ? ? ? ? this.code = code; ? ? ? ? this.name = name; ? ? } ? ? public String getCode() { ? ? ? ? return this.code; ? ? } ? ? public void setCode(String code) { ? ? ? ? this.code = code; ? ? } ? ? public String getName() { ? ? ? ? return this.name; ? ? } ? ? public void setName(String name) { ? ? ? ? this.name = name; ? ? } }
利用反射獲取枚舉值代碼
? ? @Test ? ? public void getEnumValue() throws Exception { ? ? ? ? // 1.得到枚舉類對象 ? ? ? ? Class<?> clz = ResultCode.class; ? ? ? ? // 2.得到所有枚舉常量 ? ? ? ? Object[] objects = clz.getEnumConstants(); ? ? ? ? Method getCode = clz.getMethod("getCode"); ? ? ? ? Method getName = clz.getMethod("getName"); ? ? ? ? for (Object obj : objects){ ? ? ? ? // 3.調(diào)用對應(yīng)方法,得到枚舉常量中字段的值 ? ? ? ? ? ? System.out.println("code=" + getCode.invoke(obj) + "; name=" + getName.invoke(obj)); ? ? ? ? } ? ? }
輸出結(jié)果
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java8升級到j(luò)ava17的兼容性分析與遷移指南
這篇文章主要為大家詳細(xì)介紹了從?Java?8?升級到?Java?17?的詳細(xì)分析和遷移步驟,包括代碼修改建議,依賴更新和配置調(diào)整,有需要的小伙伴可以參考一下2025-04-04解決scala.collection.mutable.Map寫入的問題
這篇文章主要介紹了解決scala.collection.mutable.Map寫入的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Java中java.lang.ClassCastException異常原因以及解決方法詳解
這篇文章主要給大家介紹了關(guān)于Java中java.lang.ClassCastException異常原因以及解決方法的相關(guān)資料,ClassCastException從字面上看是類型轉(zhuǎn)換錯(cuò)誤,通常是進(jìn)行強(qiáng)制類型轉(zhuǎn)換時(shí)候出的錯(cuò)誤,需要的朋友可以參考下2024-02-02基于Maven骨架創(chuàng)建JavaWeb項(xiàng)目過程解析
這篇文章主要介紹了基于Maven骨架創(chuàng)建JavaWeb項(xiàng)目過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08一篇文章帶你入門java算術(shù)運(yùn)算符(加減乘除余,字符連接)
這篇文章主要介紹了Java基本數(shù)據(jù)類型和運(yùn)算符,結(jié)合實(shí)例形式詳細(xì)分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運(yùn)算符、邏輯運(yùn)算符等相關(guān)原理與操作技巧,需要的朋友可以參考下2021-08-08SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn)
本文主要介紹了SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Java中==符號與equals()的使用詳解(測試兩個(gè)變量是否相等)
下面小編就為大家?guī)硪黄狫ava中==符號與equals()的使用詳解(測試兩個(gè)變量是否相等)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07Spring項(xiàng)目中Ordered接口的應(yīng)用之全局過濾器(GlobalFilter)的順序控制
在Spring框架,尤其是Spring Cloud Gateway或Spring WebFlux項(xiàng)目中,Ordered接口扮演著重要的角色,特別是在實(shí)現(xiàn)全局過濾器(GlobalFilter)時(shí),用于控制過濾器執(zhí)行的優(yōu)先級,下面將介紹如何在Spring項(xiàng)目中使用Ordered接口來管理Global Filter的執(zhí)行順序,需要的朋友可以參考下2024-06-06