java - "Iterable<Element> cannot be cast to List<Element>"- 't ` 列表 ` a type of ` 是可迭代的吗?

标签 java list classcastexception iterable

我调用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>ObjectList<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/

相关文章:

python - 从多维数组中选择一个数组

java - Hibernate 类强制转换异常

classloader - Jetty-7.1.6.v20100715中获取X509Certificate时抛出ClassCastException

java - 无法加载admob广告错误:3 ERROR_CODE_NO_FILL

java - 在ListView中显示外部SD卡中的音乐文件列表

java - 从访问器中抛出异常的错误设计决策?

python - 从python中的二维列表的所有元素中减去一个值

java - 使用正则表达式验证字符串是否以指定字符开头或结尾

c++类列表,无需初始化它们以使用静态函数

android - java.lang.ClassCastException : kotlinx. coroutines.CompletableDeferredImpl 无法转换为 java.util.List?