1

可能重复:
Java:访问枚举(枚举)中的常量

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

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

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

现在假设如果我有一个类 A ,那么请告诉我如何从类 A 访问上面的枚举常量,也请告诉我第二种方法是代替枚举我也可以使用接口方法有什么优点枚举提供以上接口..?

4

3 回答 3

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

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

于 2012-08-20T04:11:42.220 回答
1

枚举为您提供类型安全

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

Remove private从价值声明和使用

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

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

于 2012-08-20T04:12:05.803 回答
0

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

 Currency penny = Currency.PENNY;
于 2012-08-20T04:05:41.640 回答