Что означает эта строчка кода в java?

Рейтинг: 0Ответов: 1Опубликовано: 27.01.2015

Всем привет. Подскажите, пожалуйста, что означает эта строчка кода.

EnumMap<Symbol, Object> commands = new EnumMap<Symbol, Object>(Symbol.class)

Где symbol class

public enum Symbol {

    FIRST_DIGIT,
    OPERATION,
    SECOND_DIGIT

}

Я подозреваю, что он создает map такой структуры:

FIRST_DIGIT =

OPERATION =

SECOND_DIGIT =

Ответы

▲ 6Принят

EnumMap - это HashMap оптимизированный под использование enum'ом.

После строчки:

EnumMap<Symbol, Object> commands = new EnumMap<Symbol, Object>(Symbol.class)

будет создана пустая хеш-таблица.

Чтобы там что-то лежало, надо ручками добавить, например:

commands.put(STATE.FIRST_DIGIT, "I'm digit");
commands.put(STATE.SECOND_DIGIT, "I'm second digit");
commands.put(STATE. OPERATION, "I'm  operation");

Передавать тип в конструктор необходимо, так как, я уже говорил, структура оптимизирована для использования enum'ов. Передавая тип ключа в конструктор, мы позволяем на раннем этапе вычислить максимальное число элементов в таблице (так как одинаковых ключей быть не может, а элементы enum'а нельзя изменить динамически).