在Java中使用int值的枚举
Posted 飞翔的熊blabla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中使用int值的枚举相关的知识,希望对你有一定的参考价值。
C#的Java等价物是什么:
enum Foo
Bar = 0,
Baz = 1,
Fii = 10,
5 个答案:
答案 0 :(得分: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;
你会这样使用它:
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
,但这不是他们在3中所做的事情。
答案 1 :(得分:15)
如果你有一个连续的值范围,而你只需要整数值,你可以最小化地声明枚举:
public enum NUMBERZ
ZERO, ONE, TWO
然后获取int值如下:
int numberOne = NUMBERZ.ONE.ordinal();
但是,如果你需要一个不连续的范围(如你的例子,你从1跳到10)那么你需要编写自己的枚举构造函数来设置你自己的成员变量,并为该变量提供一个get方法,如其他答案中所述。
答案 2 :(得分:4)
是:
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')
获取值栏
答案 3 :(得分:2)
听起来你想要这样的东西:
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将是一个了解更多信息的好地方。
答案 4 :(得分:0)
public enum Foo
Bar(0),
Baz(1),
Fii(10);
private final int someint;
Foo(int someint)
this.someint = someint;
在Java中,枚举与其他类非常相似,但Java编译器知道在各种情况下处理的方式略有不同。因此,如果你想要它们中的数据,你似乎需要有一个数据的实例变量和一个合适的构造函数
以上是关于在Java中使用int值的枚举的主要内容,如果未能解决你的问题,请参考以下文章