Простое целочисленное перечисление - PullRequest
5 голосов
/ 20 июля 2011

Я новичок в enums, и я хотел бы создать его, чтобы сравнить целое число с более понятным определением.

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

вместо

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

Где getFruit() возвращает значения типа 1, 2 и т. Д.

Ответы [ 4 ]

9 голосов
/ 20 июля 2011

Вы упускаете точку перечислений ... вы используете их вместо"старая школа" 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
    }
}
4 голосов
/ 20 июля 2011

Вы можете использовать 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() вернуть перечисление.

1 голос
/ 20 июля 2011
public enum Fruit {
    APPLE  ("apple"), ORANGE ("orange");

    private String value;

    private Fruit(int v) { value = v; }
}

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;
}
1 голос
/ 20 июля 2011

Вы можете создать перечисление как это

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

Вы также можете проверить это учебник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...