大佬教程收集整理的这篇文章主要介绍了强制转换Arrays.asList导致异常:java.util.Arrays $ ArrayList无法强制转换为java.util.ArrayList,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对我来说(使用Java
1.6.0_26),第一个代码段与第二个代码段具有相同的例外。原因是该Arrays.asList(..)
方法仅返回aList
,不一定返回a ArrayList
。由于您实际上并不知道该方法返回的是哪种类型(或 实现
),List
因此强制转换ArrayList<String>
为不安全。结果是它可能无法正常工作。从编码风格的角度来看,一个好的解决方法是将您的stuff
声明更改为:
List<List<String>> stuff = new ArrayList<List<String>>();
这将允许添加方法中产生的任何内容Arrays.asList(..)
。
我是Java的新手,正在尝试理解为什么第一个代码片段不会导致此异常,而第二个代码片段会导致此异常。由于在两种情况下都将字符串数组传递到Arrays.asList中,所以两个代码片段都不应该产生异常还是不产生异常?
Exception in thread "main" java.lang.ClassCastException: java.util.Arrays$ArrayList cAnnot be cast to java.util.ArrayList
第一个代码段(毫无例外):
ArrayList<ArrayList<String>> stuff = new ArrayList<ArrayList<String>>();
String line = "a,b,cdef,g";
String delim = ",";
String[] pieces = line.split(delim);
stuff.add((ArrayList<String>) Arrays.asList(pieces));
第二段(导致上述异常):
ArrayList<ArrayList<String>> stuff = new ArrayList<ArrayList<String>>();
String[] titles = {"ticker","grade","score"};
stuff.add((ArrayList<String>) Arrays.asList(titles));
如果相关,我正在Eclipse Helios中使用JavaSE 1.6。
以上是大佬教程为你收集整理的强制转换Arrays.asList导致异常:java.util.Arrays $ ArrayList无法强制转换为java.util.ArrayList全部内容,希望文章能够帮你解决强制转换Arrays.asList导致异常:java.util.Arrays $ ArrayList无法强制转换为java.util.ArrayList所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。