是的,你应该能够在Java中使用枚举在switch
声明:
public enum SomeEnum { FOO, BAR, BAZ };
// in a class...
private void something(SomeEnum s) {
switch (s) {
case FOO:
// do something
break;
case BAR:
// do something else
break;
}
}
不知道我理解价值观是如何INT扎入这一点,但你可以像一个枚举字段/方法在一个普通的Java类中,并且可以使用它们来保存任何其他POJO中的int(或任何其他类型)值。
下面是一个例子,我们为一个枚举类声明一个构造函数,以便您可以在构造枚举的每个实例时传入内部变量的值。为了帮助您了解正在发生的事情:首先我们在枚举中声明这些项 - 每个声明调用构造函数,所以我们可以在这里传入实例变量。然后,像普通的Java类那样,enum类的代码如下所示。
public enum AnotherEnum {
ONE(1, "un"), TWO(2, "deux"), THREE(3, "trois"), FIFTY_SEVEN(57, "cinquante-sept");
private final int someInt;
private final String french;
private AnotherEnum(int i, String s) {
this.someInt = i;
this.french = s;
}
public int getSomeInt() {
return this.someInt;
}
public String getFrench() {
return this.french;
}
}
因此,例如,System.out.println(AnotherEnum.TWO.getSomeInt())
将打印2
和System.out.println(AnotherEnum.FIFTY_SEVEN.getFrench())
将打印cinquante-sept
。
enum.X并不意味着什么。虽然枚举只是被抽象出来的整数。 test1 = 0,test2 = 1,test3 = 2。您可以互换使用枚举和它们的整数表示。 –
这在C#中是正确的,但不是在Java中! – pobrelkey
不,他们不是。它们是实例具有关联的int(枚举的序数)的类。你可以在它们上定义方法,创建非默认构造函数等。 – yshavit