【问题标题】:what is the advantage of using enum in java? [closed]在java中使用枚举有什么好处? [关闭]
【发布时间】:2012-12-12 20:38:42
【问题描述】:

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

谢谢, 塞恩萨

【问题讨论】:

  • 看看here 以获得好的答案。

标签: java enums


【解决方案1】:

优点 -

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

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

例如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.LEFTAlignment.RIGHT,这是受限制的。

enum 的 switch-case 示例 -

String drawCellValue (int maxCellLnghth, String cellVal, Alignment align){
    switch (align) {
    case LEFT:...
    case RIGHT: ...
    }
    ...
}

【讨论】:

  • +1 在 Java 中,那些“常量”是对可以具有不可变数据或可变状态的对象的引用,并且可以是子类的成员。
【解决方案2】:

来自understanding-enums-in-java

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

来自enum-in-java-advantages
您可以免费在编译时检查有效值。使用

public static int OPTION_ONE = 0;
public static int OPTION_TWO = 1;

【讨论】:

    【解决方案3】:

    它的一个用途是作为在 Strings 类型变量上模拟 switch 的一种手段,就像在 Java 7 之前一样,这是不允许的

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-12
        • 1970-01-01
        • 2013-02-05
        • 1970-01-01
        • 1970-01-01
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多