Java 简单整数枚举

Java 简单整数枚举,java,enums,Java,Enums,我是enums的新手,我想创建一个来比较整数和更容易理解的定义 if (getFruit() == myEnum.APPLE) { // ... } 而不是 if (getFruit() == 1) { // ... } 其中getFruit()返回值,如1、2等您可以使用getFruit()==myEnum.APPLE.ordinal()其中ordinal是您在文件中声明枚举的顺序 public enum myEnum { APPLE, ORANGE, BANAN

我是
enums的新手,我想创建一个来比较整数和更容易理解的定义

if (getFruit() == myEnum.APPLE) {
    // ...
}
而不是

if (getFruit() == 1) {
    // ...
}
其中
getFruit()
返回值,如
1
2

您可以使用
getFruit()==myEnum.APPLE.ordinal()
其中ordinal是您在文件中声明枚举的顺序

public enum myEnum {
     APPLE, ORANGE, BANANA;
}
在这种情况下,苹果的序号是0,橙色是1,香蕉是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()
返回一个枚举。

您可以创建这样的枚举

public enum myEnum {
    APPLE  (1),
    ORANGE (2);
}

您也可以检查此项

您缺少枚举点。。。您可以使用它们而不是“旧式”
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
    }
}
getFruit必须返回水果枚举

public Fruit getFruit() {
    return aFruit;
}
现在你可以使用

if (getFruit() == Fruit.APPLE) { //and so on
    // ...
}
如果使用enum,最好使用switch case

switch(getFruit()) {
    case Fruit.APPLE: ... break;
    case Fruit.ORANGE: ... break;
}

当然,真正的解决方案是让
getFruit
返回一个
myEnum
。因此,如果我让
getFruit()
返回一个枚举,我如何使用整数索引引用枚举
return fruit.getValue(i)
或类似的东西?在本例中,您应该包括构造函数。否则,导致错误代码的复制可能会使OP和其他不了解使用
enum
的复杂性的人感到困惑。谢谢,现在我不那么困惑了V:
switch(getFruit()) {
    case Fruit.APPLE: ... break;
    case Fruit.ORANGE: ... break;
}