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
用于实现生成到每个特定枚举类中的valueOf(String)
方法。