在某些Javagenerics演员中,types安全警告的含义是什么?

Java警告的含义是什么?

types安全性:从对象到列表的转换实际上是针对删除的types列表进行检查

当我尝试将对象转换为具有通用信息的types时,出现此警告,如下面的代码所示:

Object object = getMyList(); List<Integer> list = (List<Integer>) object; 

这个警告是因为Java实际上并不是在运行时在使用generics的对象中存储types信息。 因此,如果object实际上是一个List<String> ,那么在运行时将不会有ClassCastException ,除非从列表中访问某个项目时,该项目与该variables中定义的genericstypes不匹配。

如果项目被添加到列表中,这会导致更多的复杂性,并带有这个不正确的genericstypes信息。 任何代码仍然持有列表的引用,但具有正确的通用types信息,现在将有一个不一致的列表。

要删除警告,请尝试:

 List<?> list = (List<?>) object; 

但是,请注意,您将无法使用某些方法(如添加),因为编译器不知道您是否尝试添加不正确types的对象。 上面的代码在很多情况下都可以使用,但是如果你必须使用add或者其他一些类似的限制方法,你只需要忍受Eclipse中的黄色下划线(或者SuppressWarning注解)。