1

我有枚举

enum Number{
  FIRST(123),
  SECOND(321);
}

Number nr=Number.FIRST

如何在不创建新方法的情况下从变量 nr 获取枚举值(不是 String 而是 int )?

4

3 回答 3

8

在 Java 中,枚举也是对象。为要传入的数字提供一个构造函数,以及一个公共实例变量;不需要getter方法。

enum Num{
  FIRST(123),
  SECOND(321);
  public final int value;
  private Num(int value) { this.value = value; }
}
于 2013-06-17T20:59:43.563 回答
4

TL;DR:你不能。

长版:

您上面的代码片段将无法编译,因为您缺少构造函数:

private int value;

public Number(int i) {
    this.value = i;
}

完成此操作后,您将需要为以下内容提供 getter value

public int getValue() {
    return this.value;
}

编辑:如果你真的,真的,不想创建一个新方法,你可以制作valuefield public,但你违反了封装的OO概念(即最佳实践)。

于 2013-06-17T20:59:09.590 回答
4

您需要像这样编写您的枚举(另外,请不要调用它Number!有java.lang.Number):

enum MyNumber
{
    FIRST(123),
    SECOND(321);

    private final int number;

    MyNumber(final int number)
    {
        this.number = number;
    }

    public int getNumber()
    {
        return number;
    }
}

如果您不想要访问器,请删除 getter 并number公开。

于 2013-06-17T20:59:45.290 回答