Могу ли я установить начальное значение enum в Java?

Я использую перечисление, чтобы сделать несколько констант:

enum ids {OPEN, CLOSE};

значение ОТКРЫТО равно нулю, но я хочу, чтобы оно равнялось 100. Возможно ли это?

Ответы на вопрос(5)

Решение Вопроса

ементы nexts):

enum ids {
    OPEN, CLOSE;
    //
    private static final int BASE_ORDINAL = 100;
    public int getCode() {
        return ordinal() + BASE_ORDINAL;
    }
};

public class TestEnum {
    public static void main (String... args){
        for (ids i : new ids[] { ids.OPEN, ids.CLOSE }) {
            System.out.println(i.toString() + " " + 
                i.ordinal() + " " + 
                i.getCode());
        }
    }
}
OPEN 0 100
CLOSE 1 101
Решение Вопроса

которые на самом деле являются просто метками для целых чисел.

Перечисления Java реализованы больше как классы - и они могут даже иметь несколько атрибутов.

public enum Ids {
    OPEN(100), CLOSE(200);

    private final int id;
    Ids(int id) { this.id = id; }
    public int getValue() { return id; }
}

Большая разница в том, что ониtype-safe это означает, что вам не нужно беспокоиться о присвоении перечисления COLOR переменной SIZE.

Увидетьhttp://docs.oracle.com/javase/tutorial/java/javaOO/enum.html для большего.

 20 мар. 2016 г., 16:30
Стандартам Java лень не разрешать устанавливать значение для перечисления. По крайней мере, c # допускает, что AND является типобезопасным
 24 июл. 2011 г., 02:15
Возможно, и особенно если вы когда-нибудь где-нибудь сериализуете интегральные значения.
 20 окт. 2015 г., 12:05
Подскажите, пожалуйста, как использовать это перечисление в функции?
 28 авг. 2017 г., 21:43
FWIW, C ++ 11 теперь имеет безопасный типenum class.
 13 авг. 2009 г., 21:35
Исходя из вашего утверждения, лучше всего будет использовать java для создания перечисления последовательных целых чисел (аналогично перечислению C ++) для индекса в массиве или чего-то такого: enum Ids {NAME (0), AGE (1) ), ВЫСОТА (2), ВЕС (3); } Спасибо, -бн

тогда может быть полезно следующее;

public enum deneme {

    UPDATE, UPDATE_FAILED;

    private static Map<Integer, deneme> ss = new TreeMap<Integer,deneme>();
    private static final int START_VALUE = 100;
    private int value;

    static {
        for(int i=0;i<values().length;i++)
        {
            values()[i].value = START_VALUE + i;
            ss.put(values()[i].value, values()[i]);
        }
    }

    public static deneme fromInt(int i) {
        return ss.get(i);
    }

    public int value() {
    return value;
    }
}

я, например так:

enum Ids {
  OPEN(100),
  CLOSE(200);

  private int value;    

  private Ids(int value) {
    this.value = value;
  }

  public int getValue() {
    return value;
  }
}

УвидетьSun Java Language Guide для дополнительной информации.

 19 окт. 2016 г., 10:39
Здорово. Можно ли смешивать? То есть присваивать только номера выбранным значениям Enum.
 16 янв. 2017 г., 15:53
закрытый модификатор избыточен для конструкторов enum

public enum HL_COLORS{
          YELLOW,
          ORANGE;

          public int getColorValue() {
              switch (this) {
            case YELLOW:
                return 0xffffff00;
            case ORANGE:
                return 0xffffa500;    
            default://YELLOW
                return 0xffffff00;
            }
          }
}

есть только один метод ..

Вы можете использовать статический метод и передать Enum в качестве параметра лайк:

public enum HL_COLORS{
          YELLOW,
          ORANGE;

          public static int getColorValue(HL_COLORS hl) {
              switch (hl) {
            case YELLOW:
                return 0xffffff00;
            case ORANGE:
                return 0xffffa500;    
            default://YELLOW
                return 0xffffff00;
            }
          }

Обратите внимание, что эти два способа используют меньше памяти и больше единиц обработки. Я не говорю, что это лучший способ, но это просто другой подход.

 20 окт. 2013 г., 11:41
Это не имеет смысла .. Я удалил его из кода .. спасибо
 20 окт. 2013 г., 10:18
ПочемуgetColorValue() синхронизируется во втором примере?

Ваш ответ на вопрос