在Java中,Enum可以完成Enums所做的伟大事情,但也可以拥有方法(行为和逻辑).与使用枚举的类相比,它有什么优势?举例说明这一点也很受欢迎.
Ada*_*ume 17
这是一个简单的例子:
enum RoundingMode {
UP {
public double round(double d) {
return Math.ceil(d);
}
},
DOWN {
public double round(double d) {
return Math.floor(d);
}
};
public abstract double round(double d);
}
Run Code Online (Sandbox Code Playgroud)
Enum 类型也是实现真正单身人士的好方法.
Java中的经典单例模式通常涉及私有构造函数和公共静态工厂方法,但仍然容易通过反射或(反)序列化实例化.枚举类型可以防止这种情况发生.
我不太确定问题的标题在哪里与其余部分相符.是的,Java枚举有行为.他们也可以拥有状态,虽然它应该真的,真的是不可改变的状态.(可变的枚举值的想法是非常可怕的IMO.)
Java中的枚举基本上是一组固定的对象.好处是你知道如果你有这种类型的引用,它总是一个null或众所周知的集合之一.
我个人非常喜欢Java enums,并希望C#也拥有它们 - 它们比C#的枚举更加面向对象,这些枚举基本上都是"命名数字".在初始化顺序方面存在一些"问题",但它们通常都是晶圆厂.