5

enum 具有valueOf(string)获取枚举常量的方法,并且java.lang.Enum类中存在的相同类型的方法具有valueOf(enumClassName, string) 我发现的名称,两者都给出相同的输出。那么还有哪些不同之处。如果没有区别,那么为什么要添加 JSL Enum.valueOf()

enum Season {
    WINTER,SUMMER
}

class Test {
    public static void main(String[] args) {
        String season = "WINTER";

        //switch (Season.valueOf(colObject))  // following line achieves same thing
        switch (Enum.valueOf(Season.class, season)) // any other difference between both approach
        {
            case WINTER: {
                System.out.println("Got it in switch case= VENDOR");
                break;
            }
            default:
                System.out.println("Fell thru.");
                break;
            }
    }
}
4

3 回答 3

7

包含该Enum.valueof()方法的原因是它适用于任何enum. 相比之下,enum valueof特定方法的方法仅适用于该特定方法enum......因为enum类不能以多态方式使用。

显然,该方法仅在您实现需要适用于多种类型Enum.valueOf(...)的代码时才真正有用......并且泛型不会削减它。enum

于 2013-04-04T10:38:46.577 回答
2

Enum.valueOf(Class<T>, String)用于实现valueOf(String)生成到每个特定枚举类中的方法。

于 2013-04-05T00:38:01.540 回答
1

Enum 中的方法是通用的,可以与任何枚举一起使用,而枚举中的方法仅特定于该枚举。

于 2013-04-04T10:53:33.847 回答