3. Что такое сырые типы (raw type)?

3. Что такое сырые типы (raw type)?

UNKNOWN

Сырые типы — это типы без указания \"уточненения\" в фигурных скобках.

Нужны чтобы поддерживать старый код (обратная совместимость). Рекомендуется использовать хоть какие-то параметризованные типы.

Raw type - это имя интерфейса без указания параметризованного типа:

Также Diamond синтаксис связан с понятием \"Type Inference\", или же выведение типов. Ведь компилятор, видя справа <> смотрит на левую часть, где расположено объявление типа переменной, в которую присваивается значение. И по этой части понимает, каким типом типизируется значение справа.

List<String> list = new ArrayList<>();

На самом деле, если в левой части указан дженерик, а справа не указан <>, компилятор сможет вывести тип. Однако это будет смешиванием нового стиля с дженериками и старого стиля без них - вы теряете безопасность (типобезопасность) типов (может добавляться какой угодно тип в список, а не то что надо. Когда будет доставаться – то может быть сюрприз)))

ArrayList<String> strings = new ArrayList<>(); // parameterized type

ArrayList arrayList = new ArrayList(); // raw type

arrayList = strings; // Ok

strings = arrayList; // Unchecked assignment (назначение)

arrayList.add(1); //unchecked call


Предыдущий вопрос: 2. Для чего нужны дженерики?

Следующий вопрос: 4. Что такое вайлдкарды (Маски)?

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку:напишите мне

Report Page