Необработанный тип дженериков 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.util.List невозможно преобразовать в
java.util.List

Но проблема в том, что в этом коде компилируется одна строка, я написал об этом комментарий в самом коде. Но метод возвращает тот же тип, и в качестве типа переменной существует тот же тип 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»