答案 0 :(得分:4)
你引用的Java文章来自2001年。那时,Java没有枚举,作者描述的方法是程序员当时用来解决Java缺陷的方法。 Java 5在2004年引入了枚举,现在旧的模式已经过时了。所以你的同事很好:你应该使用枚举。
答案 1 :(得分:2)
Java标准枚举实现已完全基于类 - 您可以在标准Java枚举中定义您喜欢的任何方法,成员变量等。
对官方枚举文档中的示例进行了很好的描述:
http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
此外,EnumSet
,EnumMap
等集合类非常强大且高效。 EnumSet
与使用原始位域具有相似的性能!如果您使用正确的枚举,则只能访问这些类。
答案 2 :(得分:1)
主要区别在于Java的枚举更简单,可能无法切换基于C#enum的类实现,而基于枚举的类更多是类,而不是枚举数据类型,即可以扩展。枚举不能从另一个类派生,也不能扩展。
基于C#enum的类的Java替代方案可能是:
public abstract static class CreditCard {
enum CreditCardType{
AMERICAN_EXPRESS, MASTER, VISA, DISCOVER;
}
CreditCardType type;
public abstract void operation1();
public abstract void operation2();
}
答案 3 :(得分:1)
在Java中,Enum类型充当以其唯一名称声明的类。它与设计用于创建常量值的任何其他类非常相似。最近,我还发现了一个信息,在Java中声明Enums之前,创建了一个类似枚举的类。就像在这个问题上提出的那篇文章一样,似乎JVM 1.5之前的基于类的枚举被广泛使用。
您可以查看此来源:http://javarevisited.blogspot.com/2011/08/enum-in-java-example-tutorial.html
我认为这是对Java Enums及其创建原因的一个非常好的解释。该文章声称Enum有3个优点:
1)类型安全。
2)除非课程工作彻底,否则Enum课程容易出现打印问题。当编码器想要返回字符串结果时,返回原始值。根据我的经验,通过对课程的一些补充,可以避免这种情况。但问题是,编码器是否方便。
3)同样,访问基于类的实例。因此,编码器无法直接访问Enum选项。编码员必须使用班级名称。
因此:为了方便和代码可读性问题,Enums是一个不错的选择。另外,Enum Structure类似于嵌套在运营商类中的单个类。如果编码器想要增强Enum Design并创建他们自己的风格,他们可以回到旧的手动编码的类系统。
答案 4 :(得分:0)
如果您知道如何使用它,我建议使用枚举。 因为他们中的一些人有很多原因