List<Number> numbers = Arrays.asList(1, 2, 3);
Но при этом ответ был принят хотя на моем компе даже компеляцию не прошел. Что за магия?
artur К
47 уровень
Почему этот код моя intellij считает ошибочным
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Jabber Worker
3 июля 2023, 18:22
Метод имеет сигнатуру List<T> asList(T... a), следовательно, он увидит, что переданы значения типа int, для каждого значения проведет аутобоксинг в Integer и вернет List<Integer>. А дальше вы хотите заставить его приравнять это переменной типа List<Number>. Это и вызывает ошибку компиляции, так как приведение типов по дженерикам невозможно. Вы можете написать это используя вайлдкарту
но при этом должны помнить, что добавить в такой List уже ничего нельзя, так реальный тип объектов такого List-а (Integer) будет утерян в рантайме.
Поэтому можно сделать так
Или проще так, если не критично
0
Денис Enterprise Java Developer
3 июля 2023, 17:47
Обычно идея тебе даёт пояснение при запуске программы или при наведении на подчёркивание в коде. Возьми да почитай, тут экстрасенсы не тусуются, чтобы угадывать что именно у тебя там ошибочно.
0