什么是Java等价的C#:
enum Foo
{
Bar = 0,
Baz = 1,
Fii = 10,
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*ebb 81
如果你想要属性,enum你需要像这样定义:
public enum Foo {
BAR (0),
BAZ (1),
FII (10);
private final int index;
Foo(int index) {
this.index = index;
}
public int index() {
return index;
}
}
Run Code Online (Sandbox Code Playgroud)
你会这样使用它:
public static void main(String[] args) {
for (Foo f : Foo.values()) {
System.out.printf("%s has index %d%n", f, f.index());
}
}
Run Code Online (Sandbox Code Playgroud)
要意识到的是,这enum只是创建类的快捷方式,因此您可以向类中添加所需的任何属性和方法.
如果您不想在您上面定义任何方法,您enum可以更改成员变量的范围并制作它们public,但这不是他们在Sun网站上的示例中所做的.
Car*_*arl 15
如果你有一个连续的值范围,并且你需要的只是整数值,你可以最小化地声明枚举:
public enum NUMBERZ {
ZERO, ONE, TWO
}
Run Code Online (Sandbox Code Playgroud)
然后获取int值如下:
int numberOne = NUMBERZ.ONE.ordinal();
Run Code Online (Sandbox Code Playgroud)
但是,如果您需要一个不连续的范围(如您的示例中,从1跳到10),那么您将需要编写自己的枚举构造函数,该构造函数设置您自己的成员变量,并为该变量提供get方法,如上所述在这里的其他答案.