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. Что такое вайлдкарды (Маски)?
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку:напишите мне