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