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

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
Зареєструйся Зараз
або Підпишись на майбутні тести