Enum和enum之间的区别

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; } } } 

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

显然,只有在实现需要为多个enum类型工作的代码时, Enum.valueOf(...)方法才真正有用……并且generics不会削减它。

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

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