Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

什么时候适合使用带参构造器?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

创建对象时必须提供的信息、不可缺少的依赖,以及建立有效状态所需的值,适合通过带参构造器传入。构造器可以立即校验,避免对象先处于不可用状态,再等待调用者逐个设置字段。是否还需要无参入口,取决于实际用途和框架要求。

讲清原理

例如范围对象需要起点不大于终点,传入两个值后立即检查,能阻止不合法实例流到其他模块。必需协作者也可以通过构造器注入,让依赖在创建时明确。

参数过多时应先检查职责和数据组织,必要时采用明确的参数对象或构建器。不要为了“总能 new 出来”,给所有必需信息编造没有业务意义的默认值。

例子与易错点

class Range {
    final int from, to;
    Range(int from, int to) {
        if (from > to) throw new IllegalArgumentException("范围倒置");
        this.from = from;
        this.to = to;
    }
}
System.out.println(new Range(2, 5).to); // 5

普通类一旦声明了自己的构造器,编译器就不再自动提供默认无参构造器。某个框架要求无参入口,不代表 Java 所有类都必须有它;需要时应按框架契约显式设计。

相关题:第 7 题、第 14 题、第 38 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。