【发布时间】:2012-12-12 20:38:42
【问题描述】:
我正在浏览 Java 中的枚举。枚举可以做的事情可以通过集合或字符串数组或用户定义的类型来实现。 Java 5 引入枚举的主要目的是什么。
谢谢, 塞恩萨
【问题讨论】:
-
看看here 以获得好的答案。
我正在浏览 Java 中的枚举。枚举可以做的事情可以通过集合或字符串数组或用户定义的类型来实现。 Java 5 引入枚举的主要目的是什么。
谢谢, 塞恩萨
【问题讨论】:
优点 -
它用于由一组固定常量组成的字段。
例如Thread.State
public enum State {
NEW,
RUNNABLE,
WAITING,
BLOCKED,
...
}
或private enum Alignment { LEFT, RIGHT };
您可以使用Enumlike-限制输入参数-
String drawCellValue (int maxCellLnghth, String cellVal, Alignment align){}
此处的 align 参数只能是 Alignment.LEFT 或 Alignment.RIGHT,这是受限制的。
enum 的 switch-case 示例 -
String drawCellValue (int maxCellLnghth, String cellVal, Alignment align){
switch (align) {
case LEFT:...
case RIGHT: ...
}
...
}
【讨论】:
来自enum-in-java-advantages
您可以免费在编译时检查有效值。使用
public static int OPTION_ONE = 0;
public static int OPTION_TWO = 1;
【讨论】:
它的一个用途是作为在 Strings 类型变量上模拟 switch 的一种手段,就像在 Java 7 之前一样,这是不允许的
【讨论】:
查看“类型安全的枚举模式”(例如,在 Joshua Bloch 的“Effective Java”第一版一书中)。 Java“枚举”结构是这种设计模式的语言级别支持(语法糖)。
【讨论】: