我打电话给一个getElements
返回的方法Iterable<Element>
.
我这样做了:
List<Element> elements = (List<Element>) getElements();
这会产生错误:
java.lang.ClassCastException: com.utesy.Element$3
cannot be cast to java.util.List
我以为一个List
是一种Iterable
?
Yes, List<T>
延伸Iterable<T>
,但这并不意味着您可以从any Iterable<T>
to List<T>
- 仅当该值actually指的是一个类型的实例List<T>
。完全可以实现Iterable<T>
而不实施其余的List<T>
界面...在这种情况下,您期望发生什么?
更简单地说,让我们改变一下Iterable<T>
to Object
and List<T>
to String
. String
延伸Object
, 所以你可以try投射自Object
to String
...但是只有在引用时,转换才会在执行时成功actually指的是String
(或者为空)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)