出现此警告是因为Java在运行时实际上并未在使用泛型的对象中存储类型信息。因此,如果
object实际上是a
List<String>,则
ClassCastException在运行时将没有任何内容,除非直到从列表中访问的项目与变量中定义的通用类型不匹配为止。
如果使用不正确的通用类型信息将项目添加到列表,则可能导致进一步的复杂性。现在,任何仍保留对列表的引用但具有正确的泛型类型信息的代码将具有不一致的列表。
要删除警告,请尝试:
List<?> list = (List<?>) object;
但是,请注意,由于编译器不知道您是否尝试添加错误类型的对象,因此您将无法使用诸如add之类的某些方法。上面的方法在很多情况下都可以使用,但是如果您必须使用add或类似的受限方法,则只需在Eclipse(或
SuppressWarning批注)中使用黄色下划线即可。



