用Java中的int值枚举
什么是C#的Java相当于:
enum Foo { Bar = 0, Baz = 1, Fii = 10, }
如果你想为你的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
只是创build一个类的一个捷径,所以你可以添加你想要的类的任何属性和方法。
如果你不想在你的enum
上定义任何方法,你可以改变成员variables的范围并public
它们,但这不是在Sun网站上的例子 。
如果你有一个连续的值范围,并且你所需要的只是整数值,那么你可以简单的声明这个枚举:
public enum NUMBERZ { ZERO, ONE, TWO }
然后获得如下的int值:
int numberOne = NUMBERZ.ONE.ordinal();
然而,如果你需要一个不连续的范围(如你的例子中,从1跳到10),那么你将需要编写你自己的枚举构造函数来设置你自己的成员variables,并为该variables提供一个get方法在这里的其他答案。
它是:
enum Foo { Bar(0), Baz(1), Fii(10); private int index; private Foo(int index) { this.index = index; } }
请注意,要从索引中获取枚举的值, Foo.valueOf(1)
(*)将不起作用。 你需要自己编码:
public Foo getFooFromIndex(int index) { switch (index) { case 0: return Foo.Bar; case 1: return Foo.Baz; case 10: return Foo.Fii; default: throw new RuntimeException("Unknown index:" + index); } }
(*):Enum.valueOf()从String返回枚举。 因此,您可以通过Foo.valueOf('Bar')
获得Bar的值
听起来像你想要这样的事情:
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教程将是了解更多信息的好地方。
public enum Foo { Bar(0), Baz(1), Fii(10); private final int someint; Foo(int someint) { this.someint = someint; } }
在Java中,枚举与其他类非常相似,但Java编译器知道在各种情况下处理方式稍有不同。 所以,如果你想在他们的数据像你似乎你需要有一个实例variables的数据和适当的构造函数。