Enum对什么有用?

Ron*_*pul 11 java enums

在阅读了关于枚举的一些问题和答案后,我发现它并没有真正有用......

它是类和变量之间的东西,但我知道在哪里可以使用它,所以它比一个类或一些变量更有用.

Tho*_*4no 34

您可以做其他事情以及使用它们的原因,但我使用枚举的主要原因是为了防止参数无效的可能性.例如,想象一下以下方法:

public void doSomethingWithAMonth(int monthNum);
Run Code Online (Sandbox Code Playgroud)

这不仅含糊不清(月份索引从1开始,还是在0?),但您可以给出右下角的无效数据(13 +,负数).如果你有一个Month带有JAN,FEB等的枚举,则签名变为:

public void doSomethignWithAMonth(Month month);
Run Code Online (Sandbox Code Playgroud)

调用此方法的代码将更具可读性,并且无法提供无效数据.


ant*_*ant 10

我将Enums用于任何具有多种不变"类型"的东西.即一周中的几天.

为什么我在这种情况下不使用String是因为我不能在String上执行switch语句而且我可以在Enum上执行,因此对于每周的每一天我都可以执行特定的操作.

我在处理单例模式时也使用Enum,查看有效的Java书籍CH2(第2章创建和破坏对象),引用:

"虽然这种方法尚未被广泛采用,但单元素枚举类型是实现单例的最佳方式." 不会粘贴代码阅读这本书非常好.

如果我是你,我首先阅读java章节枚举类型中的思考.然后在有效的Java第6章之后,你应该是好的


Pra*_*mar 8

最简单的定义 - An enum is just like any other class, with a predefined set of instances.

枚举的最佳部分是它可以在我们不能使用字符串的switch语句中使用.

和Enum是一个安全类型,因此您无法在运行时分配新值.

  • 对于任何遇到这种情况的人来说,从 Java 7 开始,不能再在 `switch` 语句中使用 `String` 了。http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html (2认同)