泛型,HashMap,爆类型转换错误

2024-12-31 14:31:38
推荐回答(1个)
回答1:

您好,HashMap[] aTweightList = new HashMap[10];
aTweightList[1] = new HashMap();
分析:(同样摘自该帖子,解释的还可以,除了编译器不承认HashMap[]这种形式是错的外,都没什么问题,事实上,便一起时承认这种写法的,但是基本上你不能使用这么定义的任何一个变量。)
1) 泛型是没有数组的。编译器不承认 HashMap[]这种形式的:
Cannot create a generic array of HashMap
原因就是数组必须确定他每一个元素的类型。但是泛型在编译阶段有一个类型擦除的问题,也就是说编译器理解 HashMap和HashMap都是同一种类型 HashMap。如果泛型数组存在,那么HashMap和 HashMap对象都可以加入到同一个HashMap[]数组中,这会造成灾难性的结果。
详细原因可以看这篇博客 http://hxraid.javaeye.com/blog/549509
如果一定要定义HashMap数组,可以使用HashMap[] aTweightList = new HashMap[10]; 形式,也就是HashMap常规类型。
(2) 对于没有初始化的类对象,系统会给予一个null值。但是调用null对象,一定会报NullPointerException异常的。养成随时初始化的好习惯。