我们应该总是在类中使用零参数构造函数吗?

use*_*814 19 java constructor

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

cod*_*ict 22

没有

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

一个很好的例子是java.awt.Color类,其所有ctors都被论证.


Joh*_*ter 10

不,始终创建零参数构造函数没有意义,以下场景是提供至少一个参数构造函数的示例

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

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

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

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

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