Тип переменной (универсальный или нет) изменяет поведение атрибутов

На этот вопрос уже есть ответ здесь:

Всего 1 ответ


Последняя строка не компилируется, но не потому, что вы используете не Irrelevant к Irrelevant класс, а потому, что переменная t3 является необработанной.

При использовании необработанного типа все testMap из класса, даже несвязанные обобщенные значения, такие как параметр типа переменной testMap , подвергаются стиранию типа, как если бы они также были необработанными. Это связано с правилами обратной совместимости, когда дженерики были введены в Java в JDK 1.5.

Фактически это означает, что testMap теперь является просто необработанной Map , Iterator которой возвращает Object . Это вызывает ошибку компиляции, которую вы видели. Вы можете указать параметр типа для переменной t3 и ошибка компиляции будет удалена.

TestGeneric<Irrelevant> t3 = new TestGeneric<>();

Есть идеи?

10000