当前位置: 首页 > 知识库问答 >
问题:

Java Collections ArrayList、LinkedList强制转换异常

陈茂
2023-03-14
 public static void main(String[] args) {
    LinkedList<Integer> a = new LinkedList<>();
    a.add(2);
    a.add(3);
    a.add(4);

    for (ArrayList ax : getBatches(a)){
        System.out.println(ax);
    }

}

private static ArrayList<ArrayList<Integer>> getBatches(List<Integer> optionIds) {
        return new ArrayList(Arrays.asList(optionIds));
}

共有1个答案

屈翰飞
2023-03-14

您的方法返回一个原始的ArrayList,这就是编译器允许它的原因。但是,在运行时,试图将LinkedList(传递给GetBatches方法的实例)强制转换为ArrayList,从而导致ClassCastException

如果将方法更改为:

private static ArrayList<ArrayList<Integer>> getBatches(List<Integer> optionIds) {
    return new ArrayList<>(Arrays.asList(optionIds));
}

您将得到一个编译错误。

private static ArrayList<ArrayList<Integer>> getBatches(List<Integer> optionIds) {
    return new ArrayList<>(Arrays.asList(new ArrayList<>(optionIds)));
}
 类似资料:
  • 例外情况: 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

  • 问题内容: 这是我尝试在Liferay Portal 6.0.6中运行portlet时得到的堆栈跟踪。 任何人都知道发生了什么事吗? 问题答案: 问题已经解决了。如上所述,问题是100%的类路径问题。尽管我用jarscan扫描了所有目录,但我找不到任何冗余。事实证明,我的同事使用了许多不必要的JAR,将它们不必要地添加到了我的WAR中。 现在正在工作! 谢谢大家;-)

  • 问题内容: 尝试将结果集强制转换为映射类时,我收到了hibernate类的类强制转换异常…我能够查看返回的结果集中的数据…但是它以Object []的形式返回我可以将Object []设置为List …我可以正确地进行hibernate映射吗?我从查询中获取了正确的数据,但映射不正确… 映射 映射类 参加班 主要 问题答案: 对于测试,我建议您在产生类强制转换异常的语句周围放置一个try-catc

  • 调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何

  • 问题内容: 我是Java的新手,正在尝试理解为什么第一个代码片段不会导致此异常,而第二个代码片段会导致此异常。由于在两种情况下都将字符串数组传递到Arrays.asList中,所以两个代码片段都不应该产生异常还是不产生异常? 第一个代码段(毫无例外): 第二段(导致上述异常): 如果相关,我正在Eclipse Helios中使用JavaSE 1.6。 问题答案: 对我来说(使用Java 1.6.0

  • 线程“main”java.lang.ClassCastException:java.base/jdk.internal.loader.ClassLoaders$AppClassLoader不能强制转换为java.base/java.net.urlClassLoader(位于org.springframework.boot.devtools.restart.defaultrestartinitial