5

我正在浏览Java中的枚举。枚举可以做的事情可以通过集合或字符串数​​组或用户定义的类型来实现。在 Java 5 中引入枚举的主要目的是什么?

谢谢, Sehensaa

4

4 回答 4

12

优点 -

  • 常量声明集
  • 限制方法中的输入参数
  • 可用于开关盒

它用于由一组固定常量组成的字段

例子是Thread.State

public enum State {
    NEW,
    RUNNABLE,
    WAITING,
    BLOCKED,
    ...
}

或者private enum Alignment { LEFT, RIGHT };

Enum您可以使用like-限制输入参数

String drawCellValue (int maxCellLnghth, String cellVal, Alignment align){}

这里的 align 参数可以是唯一的,Alignment.LEFTAlignment.RIGHT可以是受限的。

enum带有-的开关盒示例

String drawCellValue (int maxCellLnghth, String cellVal, Alignment align){
    switch (align) {
    case LEFT:...
    case RIGHT: ...
    }
    ...
}
于 2012-12-12T12:15:11.917 回答
3

理解-enums-in-java

  1. 类型安全。您可以将函数参数、返回类型、类成员或局部变量声明为特定的 Enum 类型,编译器将强制执行类型安全;
  2. 枚举基本上是类。它们可以实现接口,具有行为等等。

enum-in-java-advantages
您可以获得有效值的免费编译时检查。使用

public static int OPTION_ONE = 0;
public static int OPTION_TWO = 1;
于 2012-12-12T12:15:34.713 回答
1

看看“类型安全的枚举模式”(例如,在 Joshua Bloch 的“Effective Java”第一版一书中)。Java“枚举”结构是这种设计模式的语言级别支持(语法糖)。

于 2012-12-12T12:29:01.787 回答
1

它的一个用途是作为在 Java 7 之前模拟字符串类型变量的一种手段,switch这是不允许的

于 2012-12-12T12:17:56.317 回答