Java枚举类中的ValueOf用法说明

前言:今天遇到了一个枚举类的valueOf用法,遇到了一点问题,这里特例写一个demo来测试一下

先创建一个BasicEnum的接口

/**
 * @Author 徐志
 * @date 2020/9/4 12:42
 **/
public interface BasicEnum<L,V> {
    /**
     * get name
     *
     * @return
     */
    L getName();

    /**
     * get value
     *
     * @return
     */
    V getValue();
}

创建一个枚举类实现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;
    }
}

方式一:调用valueOf

/**
 * @Author 徐志
 * @date 2020/9/4 12:46
 **/
public class TestEnum {
   @Test
   public void test(){
       System.out.println(Color.valueOf("RED").getValue());
   }
}

F32C2C6D-4A08-D5B5-4932-8B3A88E0EFB5.png

方式二:调用valueOf

/**
 * @Author 徐志
 * @date 2020/9/4 12:46
 **/
public class TestEnum {
   @Test
   public void test(){
       System.out.println(Color.valueOf("a").getValue());
   }
}

2E6B7437-FAC5-3658-CAFE-C5235EF6320B.png

比较上面两种调用valueOf的方法。发现通过name属性调用会报错。显示参数异常

,查看枚举类的源码,找到valueOf方法

2838B72C-8676-A6E9-D745-01C86990C9B2.png

发现确实是根据枚举类的内容来调用valueOf方法,如果想使用name属性来实现valueOf的调用,我们需要重写这个valueOf方法

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的
为您推荐
    暂时没有数据