什么是类型安全警告的定义,特别是Java泛型演员?

什么是定义 Java谨慎

?!? 类型安全:从对象到列表的角色 事实上正在检查与类型List的摆脱

当我尝试将Object转换为具有共同细节的类型时,例如在遵守代码时,我会谨慎行事:

Object object = getMyList();
List<Integer> list = (List<Integer>) object;
0
2019-05-03 18:18:43
资源 分享
答案: 1

由于事实上Java在使用泛型的对象中在运行时实际上不保存类型细节,因此存在这种警告。 因此,如果object实际上是List<String>,那么在运行时肯定没有ClassCastException,除非直到从核对表访问的东西与变量中指定的公共类型不匹配。

如果事项包含在清单中,这可能会产生更多困难,这种错误的常见类型详细信息。 任何类型的代码仍然持有对清单的引用但具有适当的共同类型细节肯定会有一个不规则的清单。

要删除警告,请尝试:

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

尽管如此,请注意,由于编译器无法识别您是否尝试添加错误类型的对象,因此您肯定无法使用特定方法(例如add)。 上面的操作会在很多场景中运行,但是如果你需要使用add,或者使用类似方法限制某些方法,你肯定只需要在Eclipse(或SuppressWarning注释)中忍受黄色下划线。

0
2019-05-07 16:56:35
资源