我非常熟悉 C # ,但是开始更多地使用 Java。我希望了解到 Java 中的枚举基本上等价于 C # 中的枚举,但显然情况并非如此。最初,我很兴奋地了解到 Java 枚举可以包含多个数据片段,这似乎非常有利(http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)。然而,从那以后,我发现 C # 中缺少了很多琐碎的特性,比如能够轻松地为一个枚举元素分配一个特定的值,因此能够在没有大量工作的情况下将一个整数转换成枚举(即 将整数值转换为匹配 JavaEnum)。
所以我的问题是: 对于带有一大堆公共静态 final 字段的类,Java 枚举有什么好处吗?或者它只是提供了更紧凑的语法?
编辑: 让我说得更清楚些。Java 枚举相对于一个包含大量公共静态 final 字段 属于同一类型的类有什么好处?例如,在第一个链接的行星示例中,枚举相对于具有这些公共常量的类的优势是什么:
public static final Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
public static final Planet VENUS = new Planet(4.869e+24, 6.0518e6);
public static final Planet EARTH = new Planet(5.976e+24, 6.37814e6);
public static final Planet MARS = new Planet(6.421e+23, 3.3972e6);
public static final Planet JUPITER = new Planet(1.9e+27, 7.1492e7);
public static final Planet SATURN = new Planet(5.688e+26, 6.0268e7);
public static final Planet URANUS = new Planet(8.686e+25, 2.5559e7);
public static final Planet NEPTUNE = new Planet(1.024e+26, 2.4746e7);
据我所知,卡萨布兰卡的答案是唯一能满足这个条件的。