java 枚舉類中的valueOf用法說明
枚舉類中的valueOf用法
前言:今天遇到了一個枚舉類的valueOf用法,遇到了一點問題,這里特例寫一個demo來測試一下
先創(chuàng)建一個BasicEnum的接口
/** * @Author 徐志 * @date 2020/9/4 12:42 **/ public interface BasicEnum<L,V> { /** * get name * * @return */ L getName(); /** * get value * * @return */ V getValue(); }
創(chuàng)建一個枚舉類實現(xiàn)BasicEnum接口
添加name和value屬性
/** * @Author 徐志 * @date 2020/9/4 12:38 **/ public enum Color implements BasicEnum<String,Integer>{ RED("a",0), GREEN("b",1), BLUE("c",2); private final String name; private final Integer value; Color(String name, Integer value) { this.name = name; this.value = value; } public String getName() { return this.name; } public Integer getValue() { return this.value; } }
方式一:調(diào)用valueOf
/** * @Author 徐志 * @date 2020/9/4 12:46 **/ public class TestEnum { @Test public void test(){ System.out.println(Color.valueOf("RED").getValue()); } }
方式二:調(diào)用valueOf
/** * @Author 徐志 * @date 2020/9/4 12:46 **/ public class TestEnum { @Test public void test(){ System.out.println(Color.valueOf("a").getValue()); } }
比較上面兩種調(diào)用valueOf的方法。發(fā)現(xiàn)通過name屬性調(diào)用會報錯。
顯示參數(shù)異常,查看枚舉類的源碼,找到valueOf方法
發(fā)現(xiàn)確實是根據(jù)枚舉類的內(nèi)容來調(diào)用valueOf方法,如果想使用name屬性來實現(xiàn)valueOf的調(diào)用,我們需要重寫這個valueOf方法
枚舉類valueOf方法的疑問
枚舉類中valueOf方法只有一個參數(shù)
而Enum類中有兩個參數(shù),請問Enum實例類中的valueOf方法是從何處繼承而來?
答案:jvm進(jìn)行編譯的時候添加的
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot詳細(xì)講解視圖整合引擎thymeleaf
這篇文章主要分享了Spring Boot整合使用Thymeleaf,Thymeleaf是新一代的Java模板引擎,類似于Velocity、FreeMarker等傳統(tǒng)引擎,關(guān)于其更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-06-06Spring AOP結(jié)合注解實現(xiàn)接口層操作日志記錄
在項目開發(fā)中我們需要記錄接口的操作日志:包含請求參數(shù)、響應(yīng)參數(shù)、接口所屬模塊、接口功能描述、請求地址、ip地址等信息;實現(xiàn)思路很簡單就是基于注解和aop的方式去記錄日志,主要的難點在于日志表結(jié)構(gòu)、注解的設(shè)計已經(jīng)aop實現(xiàn)的一些比較好的實現(xiàn)方式的借鑒2022-08-08【java 多線程】守護(hù)線程與非守護(hù)線程的詳解
這篇文章主要介紹了java守護(hù)線程與非守護(hù)線程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04