Eclipse - почему для массива Java предложено сделать вывод generic - PullRequest
0 голосов
/ 13 декабря 2018

Вы не можете создавать массивы параметризованных типов , поэтому этот код в Eclipse

ArrayList<Integer>[] list = new ArrayList[1];

Невозможно параметризовать, но Eclipse показывает предупреждение

Безопасность типов: выражение типа ArrayList[] нуждается в неконтролируемом преобразовании для соответствия ArrayList<Integer>[]

А также показывает предложение Infer Generic Type Arguments , которое ничего не делает при отправке.

Infer Generic Type Arguments Заменяет вхождения необработанных типов универсальных типов на параметризованные типы после определения всех мест, где возможна эта замена.

Должно ли это предложение быть удалено или я что-то упустил?

1 Ответ

0 голосов
/ 28 декабря 2018

Да, предложение должно быть удалено.Здесь невозможно заменить необработанный тип параметризованным типом, потому что выражение создания массива должно использовать тип reifiable в качестве типа компонента.Это незаконно делать new ArrayList<Integer>[1].Вы можете сделать только new ArrayList[1] или new ArrayList<?>[1], оба из которых выдадут предупреждение для преобразования в тип ArrayList<Integer>[] (для второго потребуется явное приведение, которое выдает непроверенное предупреждение о приведении).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...