Java中不能创建泛型数组

本文讨论了将List泛型数组赋值时可能出现的ClassCastException,并解释了为什么允许这种写法可能导致运行时异常或类型推断失效。作者通过实例分析了Java中Object多态与泛型ArrayList的交互,以及新手对这一概念的理解和疑惑。
摘要由CSDN通过智能技术生成

类似于
List<Integer> [ ] = new ArrayList<> [ ];

List<Integer> [] lists = new ArrayList<>[];
后面的这个<>写上去是报错的

正确的写法应该是:
List<Integer> [] lists1 = new ArrayList[];


我的猜测:
如果允许第一种写方法的存在,那么多态的存在会导致运行时出现ClassCast异常

Object类是所有类的父类,所以可以:

lists = [list1,list2,....]其中的list都是Integer泛型的
Object[] objects = lists;

listStr = new ArrayList<String>;
listStr.add("...")
此时如果把listStr赋值到objects的第一个里,原则上是没有任何问题的
因为Object是所有类的父类
但是这个地方应该是Integer泛型的ArrayList,如果这样允许存在,
	要么运行时出现类转化异常
	要么lists定义时的泛型推断就失去了意义

这只是我在这个新手阶段的一些不成熟的见解,在未来新的视角可能会有不同的体会,如有意见欢迎指正

参考文章:
https://www.cnblogs.com/zawier/p/8505098.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值