【问题标题】:Accessing the enum constants [duplicate]访问枚举常量[重复]
【发布时间】:2012-08-20 03:51:01
【问题描述】:

可能重复:
Java: access to the constants in an enumeration (enum)

我正在通过 java 中的枚举,我有以下查询..我做了一个枚举让我们说..

 public enum Currency {
        PENNY(1), NICKLE(5), DIME(10), QUARTER(25);
        private int value;

        private Currency(int value) {
                this.value = value;
        }
};  

现在假设如果我有一个类 A ,那么请告诉我如何从类 A 访问上述枚举常量,还请告诉我第二种方法,而不是枚举,我也可以使用接口方法枚举在接口之上提供了哪些优势..?

【问题讨论】:

    标签: java enums constants


    【解决方案1】:

    你需要声明一个getValue()方法来返回每个枚举常量的value属性:

    public int getValue() {
        return value;
    }
    

    像这样使用它:

    Currency quarter = Currency.QUARTER;
    int quarterValue = quarter.getValue();  // it's 25 for the code in the question
    

    请注意,上面的值与枚举的 ordinal 值不同,其访问方式如下:

    int quarterOrdinal = quarter.ordinal(); // it's  3 for the code in the question
    

    关于枚举的优点:它们是一种类型安全的方式来指定数据类型只有一组有限的可能值。

    【讨论】:

      【解决方案2】:

      枚举给你type safety

      我认为您在这里遇到的问题是将值定义为private。因此,您无法访问常量的值。

      Remove private从值声明和使用

      System.out.println(Currency.DIME.value);
      

      (或)为 value 属性定义 get 方法。

      【讨论】:

        【解决方案3】:

        根据 Effective java Interface 常量是不好的做法。接口将定义类型而不是常量。 从 A 类中,您可以定义可以保存枚举值的变量,然后您可以为其分配任何枚举值

         Currency penny = Currency.PENNY;
        

        【讨论】:

          猜你喜欢
          • 2011-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-18
          • 2019-05-14
          • 2013-06-09
          • 1970-01-01
          • 2014-09-17
          相关资源
          最近更新 更多