You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将List<T>类型参数传入要求ArrayList<T>类型的构造器?

问题原因

报错的核心是Java泛型的类型匹配约束:Node构造器要求第二个参数为ArrayList<Node>子实现类类型,而你传入的node.neighbors是List<Node>父接口类型,无法直接隐式转换。

解决方法

直接把List<Node>类型的neighbors传入ArrayList的构造器,显式转换为ArrayList实例即可,符合语法要求且不需要修改原有Node类代码。

修改后代码
class Solution {
    public Node copyGraph(Node node) {
        // 显式将List转为ArrayList实例解决类型不匹配问题
        Node n = new Node(node.val, new ArrayList<>(node.neighbors));
        // 后续深拷贝逻辑
    }
}
补充注意事项
  • 上述写法只是解决了编译报错问题,如果你要实现完整的图深拷贝,不能直接传入原节点的邻居列表,需要先递归拷贝所有邻居节点,再把拷贝后的邻居列表组装成ArrayList传入构造器,避免新旧图的节点引用绑定。
  • 如果你能确定运行时node.neighbors的实际类型就是ArrayList,也可以用强制类型转换(ArrayList<Node>) node.neighbors,但这种写法有类型转换风险,不推荐使用,优先用构造器转换的写法。

内容的提问来源于stack exchange,提问作者brainoverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:24:06