【问题标题】:Why default constructor is not provided by compiler when class contains parametrized constructor defined by user? [duplicate]当类包含用户定义的参数化构造函数时,为什么编译器不提供默认构造函数? [复制]
【发布时间】:2019-05-03 08:28:44
【问题描述】:

我是java新手,想知道“当类包含用户定义的参数化构造函数时,为什么编译器不提供默认构造函数?”

【问题讨论】:

  • 为什么你认为应该这样做?
  • 因为它就是这样。而且因为总是有一个默认构造函数是非常糟糕的做法,因为你的所有字段都应该有什么值? null?
  • 默认构造函数只是为了方便。如果可以的话,最好给字段一个合理的初始值。
  • 在已经给出的解释旁边。也许你对龙目岛感兴趣。这可以帮助简化编写 POJO 和其他带有注释的类。 projectlombok.org

标签: java default-constructor parameterized-constructor


【解决方案1】:

当作者决定不提供任何构造函数时,编译器添加该默认构造函数是完全可以的。 显然用户并不关心该类的“如何”创建对象,他接受“默认”开始。

但是一旦作者写下带有参数的构造函数,他也很明显假设他的构造函数中的一个被使用了。

直截了当的推理:假设您的类有多个字段,并且用户编写的构造函数初始化所有字段。编译器生成的默认构造函数应该如何处理这些字段?!正如其中一位 cmets 指出的那样:将它们留在null 或者可能是 0 不是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2022-12-06
    • 2018-02-24
    相关资源
    最近更新 更多