Необработанный тип дженериков Java влияет на тип возвращаемого результатаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Необработанный тип дженериков Java влияет на тип возвращаемого результата

Сообщение Anonymous »

Вот кусок кода, написанный на Java.
И проблема в том, что я не понимаю, почему я могу назначить List, если я передаю методу doSomething необработанный тип (который в моем случае является просто HashMap), похоже, по какой-то причине необработанный тип на входе влияет на необработанный тип на выходе.

Код: Выделить всё

class Someclass{
interface A{

}
static class B implements A{}

static List doSomething(Map param) {
return List.of(new B());
}

public static void test() {
List bs = doSomething(null);
List list = doSomething(new HashMap());//compiles, but with warnings
List list2 = doSomething(new HashMap());//does not compile
}
}
Я пытаюсь «извлечь переменную» в Intelliji IDEA с помощью этого выражения: doSomething(new HashMap()), и оно автоматически указывает тип переменной как List (который также является необработанным типом).
Может кто-нибудь объяснить, это ожидаемое поведение или это ошибка?
Есть ли что-нибудь в спецификации языка Java по этому поводу?Я использую Java 17, кстати. Я не уверен, что эта проблема зависит от поставщика JDK
Это дало мне одинаковый результат на разных машинах, где используются разные поставщики jdk, я не пробовал все из них, я пробовал не более двух разных поставщиков, openjdk 17 ( который по умолчанию находится в репозитории Debian) и принять openjdk.

Подробнее здесь: https://stackoverflow.com/questions/793 ... urn-result
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»