我是enums
的新手,我想创建一个将整数与更易于理解的定义进行比较。
if (getFruit() == myEnum.APPLE) {
// ...
}
而不是
if (getFruit() == 1) {
// ...
}
其中getFruit()
返回1
,2
等值,等等
答案 0 :(得分:9)
你遗漏了枚举的意思......你使用而不是“旧学校”int
常数。
看看这个:
public enum Fruit {
APPLE,
ORANGE,
BANANA
}
public class Dessert {
private Fruit fruit;
public Dessert(Fruit fruit) {
this.fruit = fruit;
}
public Fruit getFruit() {
return fruit;
}
}
public class Test {
Dessert dessert = new Dessert(Fruit.APPLE);
if (dessert.getFruit() == Fruit.ORANGE) {
// nope
} else if (dessert.getFruit() == Fruit.APPLE) {
// yep
}
}
答案 1 :(得分:4)
您可以使用getFruit() == myEnum.APPLE.ordinal()
,其中序数是您在文件中声明枚举的顺序。
public enum myEnum {
APPLE, ORANGE, BANANA;
}
本例中APPLE的序数为0,ORANGE为1,BANANA为2.
或者您可以执行以下操作:
public enum myEnum {
APPLE(1), ORANGE(2), BANANA(3);
private final int i;
private myEnum(int i){
this.i=i;
}
public int getNumber(){
return i;
}
}
但是,我只会让getFruit()
返回枚举。
答案 2 :(得分:1)
答案 3 :(得分:1)
public enum Fruit {
APPLE ("apple"), ORANGE ("orange");
private String value;
private Fruit(int v) { value = v; }
}
getFruit必须返回Fruit enum
public Fruit getFruit() {
return aFruit;
}
现在你可以使用
if (getFruit() == Fruit.APPLE) { //and so on
// ...
}
如果你使用枚举,最好使用switch-case
switch(getFruit()) {
case Fruit.APPLE: ... break;
case Fruit.ORANGE: ... break;
}