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

为什么我的Java拷贝构造函数没有返回填充了值的新对象?

拷贝构造函数初始化失败问题排查

核心原因

你的拷贝构造函数中所有赋值操作都作用在了方法内部创建的局部koetinLList对象上,没有对当前正在构造的实例(this对象)做任何初始化,因此新创建的对象成员变量始终是默认的null值。

具体错误点

  • 构造函数的作用是初始化new关键字创建出来的对象本身,不需要在方法内部额外创建同类型的局部实例。你代码中声明的koetinLList list = new koetinLList();是方法局部变量,方法执行结束后就会被回收,和你要构造的外部对象完全无关。
  • 空链表场景下没有做兼容处理,虽然不会触发报错,但逻辑完整性不足。

修正后的拷贝构造函数代码

public koetinLList(koetinLList aList) {
    if (aList.head != null) {
        // 直接给当前实例的head成员赋值
        this.head = new koetinNode(aList.head);
        koetinNode newListnode = this.head;
        koetinNode i = aList.head.next;
        while (i != null) {
            newListnode.next = new koetinNode(i);
            newListnode = newListnode.next;
            i = i.next;
        }
    }
    // 若传入的aList为空链表,当前实例head默认值为null,符合预期
}

修正后调用koetinLList list = new koetinLList(lines);即可正常完成链表拷贝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:01