在java中从枚举获取int值

在java中从枚举获取int值,java,Java,我有枚举 enum Number{ FIRST(123), SECOND(321); } Number nr=Number.FIRST 在不创建新方法的情况下,如何从变量nr中获取枚举值(不是字符串而是int);医生:你不能 长版本: 上面的代码段将无法编译,因为缺少构造函数: private int value; public Number(int i) { this.value = i; } 完成此操作后,需要为值提供getter: public int getVal

我有枚举

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

Number nr=Number.FIRST
在不创建新方法的情况下,如何从变量nr中获取枚举值(不是字符串而是int);医生:你不能

长版本:

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

private int value;

public Number(int i) {
    this.value = i;
}
完成此操作后,需要为
值提供getter

public int getValue() {
    return this.value;
}
编辑:如果你真的,真的,不想创建一个新的方法,你可以将
字段
公开,但是你违反了封装的OO概念(即最佳实践)。

TL;医生:你不能

长版本:

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

private int value;

public Number(int i) {
    this.value = i;
}
完成此操作后,需要为
值提供getter

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

编辑:如果你真的,真的,不想创建一个新方法,你可以将
字段
公开,但是你违反了封装的OO概念(即最佳实践)。

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

enum Num{
  FIRST(123),
  SECOND(321);
  public final int value;
  private Num(int value) { this.value = value; }
}

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

enum Num{
  FIRST(123),
  SECOND(321);
  public final int value;
  private Num(int value) { this.value = value; }
}

您需要这样编写枚举(另外,请不要称它为
Number
!这里有
java.lang.Number
):


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

您需要这样编写枚举(另外,请不要称它为
number
!这里有
java.lang.number
):


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

那么,您是否正在尝试获取索引(
0
)或声明中第一个
旁边的编号(
123
)?
enum
将无法编译。您需要一个接受
int
的构造函数。您需要创建一个方法。那么,您是在尝试获取索引(
0
)还是在声明(
123
)中第一个
旁边的数字?
enum
将不会编译。您需要一个接受
int
的构造函数。你需要创建一个方法。嗯,你的整数在这里是可变的,但是OP确实声明“不创建新方法”。呃,你可以使它不可变,而不使其私有。为您修复了它。另外,+1表示最佳(通常很糟糕)解决方案!注意,枚举构造函数的
private
修饰符是多余的,它是定义为private的UHM,您的整数在此是可变的,但OP确实状态为“不创建新方法”。呃,您可以使其不可变,而不必使其私有。为您修复了它。另外,+1表示最佳(通常很糟糕)解决方案!注意,枚举构造函数的
private
修饰符是多余的,它是私有的,定义有什么名称冲突?Java不在乎您的类是否与另一个类命名相同,只要完全限定名不同。好的,但究竟谁会导入some.other.package.Number而不是Java.lang.Number?好的,如果您的客户端类位于同一个包(即,
some.other.package
)上,然后将使用
some.other.package.Number
代替
java.lang.Number
,除非您专门导入
java.lang.Number
。什么名称冲突?Java不在乎您的类是否与另一个类命名相同,只要完全限定名不同。好的,但究竟谁会导入some.other.package.Number而不是Java.lang.Number?好的,如果您的客户端类位于同一个包(即,
some.other.package
)上,然后将使用
some.other.package.Number
代替
java.lang.Number
,除非您专门导入
java.lang.Number