访问枚举常量

时间:2012-08-20 03:51:01

标签: java enums constants

  

可能重复:
  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类访问枚举的上述常量,还请让我知道第二种方法,而不是enum我也可以去接口方法enum在界面上提供的优势是什么??

3 个答案:

答案 0 :(得分:2)

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

public int getValue() {
    return value;
}

像这样使用:

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

请注意,上述值与枚举​​的序数值不同,可以这样访问:

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

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

答案 1 :(得分:1)

枚举为您提供type safety

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

来自值声明的

Remove private并使用

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

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

答案 2 :(得分:0)

根据有效的java接口常量是不好的做法。接口用于定义不是常量的类型。 从A类开始,您可以定义可以保存枚举值的变量,然后您可以为其指定任何枚举值

 Currency penny = Currency.PENNY;