Что означает Предупреждение Java?
Type safety: The cast from Object to List<Integer> is actually checking against the erased type List
Я получаю это предупреждение, когда пытаюсь привести объект к типу с общей информацией, например, в следующем коде:
Object object = getMyList();
List<Integer> list = (List<Integer>) object;




Это предупреждение возникает из-за того, что Java фактически не сохраняет информацию о типе во время выполнения в объекте, который использует универсальные шаблоны. Таким образом, если object на самом деле является List<String>, во время выполнения не будет ClassCastException, за исключением случаев, когда из списка будет получен доступ к элементу, который не соответствует универсальному типу, определенному в переменной.
Это может вызвать дополнительные сложности, если в список будут добавлены элементы с неверной информацией об общем типе. Любой код, все еще содержащий ссылку на список, но с правильной информацией об общем типе, теперь будет иметь несогласованный список.
Чтобы удалить предупреждение, попробуйте:
List<?> list = (List<?>) object;
Однако обратите внимание, что вы не сможете использовать определенные методы, такие как add, потому что компилятор не знает, пытаетесь ли вы добавить объект неправильного типа. Вышеупомянутое будет работать во многих ситуациях, но если вам нужно использовать add или какой-либо аналогичный ограниченный метод, вам просто придется столкнуться с желтым подчеркиванием в Eclipse (или аннотацией SuppressWarning).
Если вы хотите избавиться от желтого подчеркивания в Eclipse, но не хотите добавлять
@SuppressWarning, у вас есть возможность игнорировать предупреждение в настройках. В окне настроек перейдите в Java> Компилятор> Ошибки / предупреждения, затем в разделе Универсальные типы измените параметр Непроверенная операция универсального типа на Игнорировать