Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpGnRt 113 of 322 menu
◀ ▶

Сырой тип в Java

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

Сырой тип List без параметра ведет себя как список элементов Object. Компилятор выдает предупреждение, но код собирается:

@SuppressWarnings("rawtypes") void demo() { List raw = new ArrayList(); raw.add("text"); raw.add(10); System.out.println(raw.size()); }

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

@SuppressWarnings({"rawtypes", "unchecked"}) void risky() { List raw = new ArrayList(); raw.add(5); String label = (String) raw.get(0); System.out.println(label.length()); }

Параметризованный тип List<String> не совместим с сырым List в обе стороны без предупреждений о непроверенных операциях. В новом коде аргументы типа указывают явно, сырые типы оставляют для совместимости со старыми библиотеками.

Создайте параметризованный список строк, добавьте "ok" и выведите элемент без приведения типов. Убедитесь, что компилятор знает тип элемента.

Объясните себе вслух, почему добавление числа в List<String> запрещено, а в сырой список - нет. Запишите один комментарий в коде рядом с параметризованным объявлением.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить