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īng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring 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

