我们是否应该在类中始终有一个零参数构造函数?

2022-09-02 12:08:03

每个 Java 类都应该有一个零参数构造函数吗?


答案 1

如果在不向构造函数提供任何信息的情况下创建类的实例是没有意义的,则不需要零参数构造函数。

一个很好的例子是java.awt.Color类,其所有ctor都被参数化。


答案 2

不,总是创建零参数构造函数是没有意义的,以下场景是提供至少a-some-argument-constructor有意义的示例

  1. 类本身无法创建的必需依赖项。
  2. 属性没有有意义的默认值。

您希望/需要零参数构造函数的情况:

  1. 您希望遵守 JavaBeans 规范(对于简单的数据对象有意义)。
  2. 可以使用有意义的默认值初始化所有字段。
  3. 您希望使用需要它的框架。

在我看来,使用零参数构造函数的错误参数之一是一长串参数。为此,有比接受初始化创建后未处于安全状态的对象更好的解决方案:

  1. 使用生成器模式。
  2. 提供专用容器对象以通过构造函数配置实例。
  3. 提供多个构造函数,其中每个构造函数的基本参数都是必需的参数,不能分配默认值。