C#的Java等价物是什么:
enum Foo
{
Bar = 0,
Baz = 1,
Fii = 10,
}
发布于 2009-11-06 00:57:44
如果你想要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;
}
}
你可以这样使用它:
public static void main(String[] args) {
for (Foo f : Foo.values()) {
System.out.printf("%s has index %d%n", f, f.index());
}
}
需要认识到的是,enum
只是创建类的快捷方式,因此您可以向该类添加任何您想要的属性和方法。
如果您不想在enum
上定义任何方法,可以更改成员变量的作用域并将其设置为public
,但这不是它们在example on the Sun website中所做的事情。
发布于 2011-09-05 07:31:10
如果您有一个连续的值范围,并且您所需要的只是整数值,那么您只需最小限度地声明枚举:
public enum NUMBERZ {
ZERO, ONE, TWO
}
然后获取int值,如下所示:
int numberOne = NUMBERZ.ONE.ordinal();
但是,如果您需要一个不连续的范围(如您的示例中,您从1跳到10),那么您将需要编写自己的枚举构造函数来设置您自己的成员变量,并为该变量提供一个get方法,如此处的其他答案中所述。
发布于 2009-11-06 00:58:35
听起来你想要这样的东西:
public enum Foo {
Bar(0),
Baz(1),
Fii(10);
private int number;
public Foo(int number) {
this.number = number;
}
public int getNumber() {
return number;
}
}
对于初学者来说,Sun的Java Enum Tutorial将是一个学习更多信息的好地方。
https://stackoverflow.com/questions/1681976
复制相似问题