栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我会收到类强制转换异常(具有泛型,具有可比性)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我会收到类强制转换异常(具有泛型,具有可比性)?

问题是您将泛型类型用作数组的类型。在运行时对数组类型进行了 修饰 (实际上存在于JVM中),但没有对通用类型进行修饰。这意味着您

newE[]
实际上最终将成为
Object[]
所需类型的数组,而不是该数组。

标准集合通过不提供直接访问数组和强制转换为

E
on等操作来解决此问题
get()
。如果您真的认为使用类型化数组是最好的选择,那么您将需要传递
Class<E>clazz
给抽象基类的构造函数,并使用它来构造一个正确类型化的数组:

protected AbstractArrayMyList(Class<E> clazz) {    this.elementClass = clazz;    this.elementData = Array.newInstance(clazz, INITIAL_SIZE);}

您得到的原因

ClassCastException
是,编译器将其签名替换为擦除,这基本上是可接受类型的最大公分母。由于您要缩小子类中的
E
Object
Comparable
,因此该方法上的签名最终被
Comparable[]
代替
Object[]



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号