我调用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
?
最佳答案
是的,List<T>
延伸Iterable<T>
,但这并不意味着您可以从任何 Iterable<T>
转换至 List<T>
- 仅当值实际上 引用 List<T>
类型的实例时.完全有可能实现 Iterable<T>
没有实现 List<T>
的其余部分界面...在那种情况下,您希望发生什么?
简单来说,让我们改变Iterable<T>
至 Object
和 List<T>
至 String
. String
延伸Object
, 所以你可以尝试从Object
转换至 String
...但只有在引用实际上 引用 String
时,转换才会在执行时成功(或者为空)。
关于java - "Iterable<Element> cannot be cast to List<Element>"- 't ` 列表 ` a type of ` 是可迭代的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3959892/