【发布时间】:2016-09-11 23:28:00
【问题描述】:
Set<Object> removedObjs = new HashSet<>();
List<? extends MyEntity> delObjs = (List<? extends MyEntity>) new ArrayList<>(removedObjs);
MyEntity是标记接口。
以上代码在java-7(准确地说是java 版本“1.7.0_91”)中运行良好,但在java-8(java 版本“1.8.0_77”)中运行良好
在 Java8 中,我收到以下异常:
incompatible types: ArrayList<Object> cannot be converted to List< ? extends MyEntity>
【问题讨论】:
-
如果您删除
<>,您应该只会收到一个警告。如果它在 Java 8 中不起作用,那么它可能不应该在 Java 7 中起作用。 -
它可以在我的环境 JAVA1.8.0_92 中编译,只有警告:类型安全:从 ArrayList
-
查看代码,它不应该工作似乎是合乎逻辑的。只需在两行之间插入
removedObjs.add("42");即可查看原因。 -
是否有机会改进标题以使其对将来搜索此问题的人更有用?
标签: java-7 java-8 java java-8 java-7