简单的整数枚举

时间:2011-07-20 13:28:49

标签: java enums

我是enums的新手,我想创建一个将整数与更易于理解的定义进行比较。

if (getFruit() == myEnum.APPLE) {
    // ...
}

而不是

if (getFruit() == 1) {
    // ...
}

其中getFruit()返回12等值,等等

4 个答案:

答案 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)

您可以创建这样的枚举

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

您还可以查看此tutorial

答案 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;
}