程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了强制转换Arrays.asList导致异常:java.util.Arrays $ ArrayList无法强制转换为java.util.ArrayList大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决强制转换Arrays.asList导致异常:java.util.Arrays $ ArrayList无法强制转换为Java.util.ArrayList?

开发过程中遇到强制转换Arrays.asList导致异常:java.util.Arrays $ ArrayList无法强制转换为Java.util.ArrayList的问题如何解决?下面主要结合日常开发的经验,给出你关于强制转换Arrays.asList导致异常:java.util.Arrays $ ArrayList无法强制转换为Java.util.ArrayList的解决方法建议,希望对你解决强制转换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,请注明来意。
标签:$