我是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。
对我来说(使用Java
1.6.0_26),第一个代码段与第二个代码段具有相同的例外。原因是该Arrays.asList(..)
方法仅返回a
List
,不一定返回a ArrayList
。由于您实际上并不知道该方法返回的是哪种类型(或 实现
),List
因此强制转换ArrayList<String>
为不安全。结果是它可能无法正常工作。从编码风格的角度来看,一个好的解决方法是将您的stuff
声明更改为:
List<List<String>> stuff = new ArrayList<List<String>>();
这将允许添加方法中产生的任何内容Arrays.asList(..)
。
Deal和DealDocument类是相同的。Deal document类如下所示: 你觉得问题可能是什么?它似乎是随机出现的,好像它工作正常,但在时间内系统退化 *更新*:这是我如何配置模型映射器的:ModelMapper.GetConfiguration().SetAmbiguity忽略(false).SetFieldMatchingEnabled(true).SetMatchingStrat
问题内容: 我有一个问题,我的应用生成了此异常,我听不懂。我已经在我的build.gradle中实现了multiDexEnabled 我的班级Java } 文件摇篮 Manifest.xml 问题答案: 我认为您应该将班级扩展到自己的班级,如下所示: 之后,您必须将文件更改为此: 请检查此链接以获取更多信息:http : //developer.android.com/reference/andr
例外情况: java.lang.ClassCastException:com.interconnect.library.gcm.util.checkplayServices(util.java:96),com.interconnect.library.gcm.regiseter.handleRegister(regiseter.java:53),com.interconnect.library.g
我是新的jasper报告。我已经创建了一个报告与SQL服务器存储过程。当查看报告从Swing框架我得到以下异常。 我已经用与sql Server 2000中存储过程定义相同的数据类型定义了报告的参数。 以下是本文的部分。显示存储过程调用的参数和查询的jrxml文件。 我存储过程的一部分如下