我尝试使用Enum作为常量以获得可读性,如下所示。
Public enum x { test1 , test2 , test3 }
我想将此枚举传递给方法并将其用作int值,如图所示
private void (int type)
{
switch(int)
{
case enum.X:
// do somthing
break;
}
} ;
我们可以在这里使用枚举,因为它比使用int值更清晰。(如switch 1等)。是否可以这样使用。?
答案 0 :(得分:4)
是的,您应该能够在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类中一样,并且可以使用这些来保存int(或任何其他类型)值,就像在任何其他POJO上一样
这是一个我们为枚举类声明构造函数的示例,以便您可以在构造枚举的每个实例时传入内部变量的值。为了帮助您了解正在发生的事情:首先我们在枚举中声明项目 - 每个声明都调用构造函数,因此我们可以在这里传递实例变量。然后是枚举类的代码,就像普通的Java类一样。
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
。
答案 1 :(得分:0)
不,你不能说:
case Enumerator.ordinal():
但你可以说:
switch(EnumObject.values()[intVar]) {
case Enumerator1:
...
}
答案 2 :(得分:0)
另一种方法是你可以通过多做一些枚举类来完成这项工作。
public enum Foo {
X (1),
Y (2);
private int value;
Foo (int value)
{
this.value = value;
}
}
现在你需要做的就是:
switch (int)
{
case Foo.X: doSomething ();break;
case Foo.Y: doSomething ();break;
}