编写一个什么都不做的构造函数可以吗?

时间:2010-03-08 21:47:20

标签: java oop constructor

要使用类的方法,我需要实例化一个类。目前该类没有构造函数(所以我想写它)。但是我已经意识到构造函数应该什么都不做(我需要指定字段的值)。

在这种情况下,我有一个问题,如果可以编写什么都不做的构造函数。例如:

public Point() {
}

13 个答案:

答案 0 :(得分:15)

你不需要写一个空的contstructor; Java编译器会自动为您插入一个(仅当您没有定义任何其他带有args的构造函数时)。

所以它很好(在某些情况下很有用),但不是必需的。

答案 1 :(得分:4)

听起来你明确地创建了一个没有必要的默认构造函数。如果没有其他构造函数,则会自动创建默认构造函数。

答案 2 :(得分:4)

你不需要。如果您没有指定一个默认构造函数,Java将为您提供:

  

If a class contains no constructor declarations, then a default constructor that takes no parameters is automatically provided

答案 3 :(得分:4)

据我所知,空构造函数的唯一实际用途是将其设置为私有以防止任何人实例化类,如下所示:

private Point() {}

否则,正如其他答案所说,这纯粹是一种风格选择,无论如何都是无害的。

答案 4 :(得分:3)

正如其他人所说,你不需要一个人来编译 但是对于编码标准,我会把它扔进那里。通常在查看类时,构造函数位于顶部,很高兴看到会发生什么。如果不存在,开发人员需要在类中搜索它。并且根据使用哪个IDE,可能会很痛苦。

但它真的取决于你。

答案 5 :(得分:1)

语言肯定可以接受什么也不做的构造函数,因为如果不这样做,Java默认提供一个(JLS 8.8.9):

  

如果某个类不包含构造函数声明,则会自动提供不带参数的默认构造函数。

对于何时可以自动提供默认构造函数,它将具有哪些访问修饰符等具有一些限制,并且它们都在JLS中指定。

答案 6 :(得分:0)

这样做绝对可以。可能你稍后会用一些有用的代码填写它。

答案 7 :(得分:0)

除非你有其他带参数的构造函数,否则你不需要编写一个空构造函数(因为它是默认值)。

答案 8 :(得分:0)

没有必要指定默认(空)构造函数,因为编译器会自动为其创建它。

答案 9 :(得分:0)

当然,如果你不这样做,编译器会这样做,但是因为它是语言的一部分,所以我不会选择ctor,除非它应该是私有的或有参数。

答案 10 :(得分:0)

正如其他人所提到的,在您的情况下,默认构造函数不是必需的,因为Java在您不定义默认构造函数时会创建默认构造函数。但是要回答你的问题,有一个空的默认构造函数是完全可以的。

另一种需要默认构造函数的情况是当你带有参数的构造函数时,你的类需要被序列化。

答案 11 :(得分:0)

如果你想要一个需要空构造函数的类,以及后来带有参数的构造函数,我会说它是一种良好的编码方式,可以继续并包含它。如果有其他带有参数的构造函数,那么空构造函数将不会被Java放在那里。

如果你有一个只有1个语句的if语句,就有点像。你应该继续把它括在它周围,或者只是让一个声明在if下面缩进?好吧,如果您在此之后添加更多语句并忘记括号,那么您会遇到逻辑错误。也可以继续使用括号,换句话说就是构造函数。

答案 12 :(得分:0)

如果您不需要构造函数,那么您可能根本不需要实例化此类。如果你想让这个类做的就是提供你要使用的方法,为什么不把它作为静态类?