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

Java类未自定义构造函数,为何能通过带参构造实例化对象?

问题解答

核心结论

Java不存在自动生成多参数构造函数的隐式规则,你看到的调用不存在所谓的「隐藏构造函数」,属于题解代码展示不完整导致的误解。

具体原因分析

  • 如果类没有显式声明任何构造函数,Java编译器只会自动生成一个无参空构造函数,绝对不会自动生成包含四个参数的构造函数,题目给出的Node类定义直接运行的话,new Node(0, null, head, null)会直接报编译错误。
  • 题解中可正常调用四参构造的常见原因有两个:
    1. 题解作者自行给Node类补充了全参数构造函数,贴代码时只保留了题目给出的属性定义部分,遗漏了自己新增的构造函数实现。
    2. 题解作者使用了Lombok的@AllArgsConstructor等注解,编译时会自动生成全参构造,贴代码时没有展示对应的注解声明。

合法实现方案

如果要在题目给出的Node类基础上实现等效的dummy节点创建,有两种常用方式:

  1. 补充四参构造函数
class Node {
    public int val;
    public Node prev;
    public Node next;
    public Node child;
    // 新增四参构造函数
    public Node(int val, Node prev, Node next, Node child) {
        this.val = val;
        this.prev = prev;
        this.next = next;
        this.child = child;
    }
}

// 后续即可正常调用四参构造
Node dummy = new Node(0, null, head, null);
  1. 使用默认无参构造后手动赋值
// 编译器自动生成的无参构造创建实例,引用类型属性默认值为null
Node dummy = new Node();
dummy.val = 0;
dummy.next = head;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 14:24:07