在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
。