Java中不支持泛型数组, 以下代码会编译报错:generic array creation

1 ArrayList<Integer>[] listArr = new ArrayList<Integer>[10];

 

Java 文档给了一个例子来说明为什么不能支持泛型数组:

1 List<String>[] lsa = new List<String>[10]; // illegal
2 Object[] oa = lsa;  // OK because List<String> is a subtype of Object
3 List<Integer> li = new ArrayList<Integer>();
4 li.add(new Integer(3));
5 oa[0] = li; 
6 String s = lsa[0].get(0); 

 

但以下代码不会在编译时报错,只是运行时报格式转换异常:

1 List<Integer>[] listArr = (List<Integer>[])new ArrayList[5];
2 Object[] oa = listArr;
3 ArrayList<String> strList = new ArrayList<>();
4 strList.add("hello");
5 oa[0] = strList;
6 int n = listArr[0].get(0);    

 

欢迎有为青年来指点迷津~

版权声明:本文为cbhe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cbhe/p/12619851.html