Что будет выведено на экран следующим кодом?

import java.util.EnumMap;
import java.util.Map;

enum Types { A, B, C }

public class Test {
    static Integer value;
    public static void main(String args[]) {
        Map<Types, Integer> m = new EnumMap<Types, Integer>(Types.class);
        m.put(Types.A, value);
        System.out.println(m);
    }
}
Explanation
В коллекции EnumMap имеется параметризованный конструктор, который задаёт используемый тип элементов перечисления.
Этот тип сохраняется в экземпляре коллекции, и используется для контроля значения ключа во время работы программы:

enum Types { A, B, C }
enum Wrong { A }
public class Test {
    public static void main(String... args) {
        Map<Types, Integer> m = new EnumMap<Types, Integer>(Types.class);
        Map m1 = m; // 
        m1.put(Wrong.A, null); // ошибка ClassCastException
    }
}

Если использовать более популярные реализации java.util.Map (напр., HashMap, TreeMap), то аналогичный код будет выполняться без ошибок:

Map<Types, Integer> m = new HashMap<Types, Integer>();
Map m1 = m;
m1.put(Wrong.A, null); // неправильный ключ, но ошибки нет

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты