我正在阅读别人的代码,并被以下代码片段弄糊涂了:
public static Builder Builder() {
return new Builder();
}
这是一个构造函数吗?构造函数通常没有“ return”语句。常规方法不使用大写的“ Builder()”。我很困惑。
答案 0 :(得分:7)
区分构造函数和方法的关键特征是返回类型。所以
sign in
是 /* optional modifiers */ Builder()
的构造函数 1 ,但是
Builder
是一个名为 /* optional modifiers */ Builder Builder()
的方法,该方法返回一个Builder
对象。由于Java方法应该以小写字母开头,因此它也也是严重违反样式的。除其他外,这使人类更容易区分方法和构造函数! (尽管编译器不在乎...)
还有其他故事。方法允许使用某些修饰符,但构造函数不允许使用。例如Builder
修饰符。
简而言之,您的示例是方法 2 。
1-请注意,构造函数名称必须与封闭的类名称匹配。但是,如果您错了,编译器仍会在编译错误中将其称为构造函数。
2-我们可以将其进一步分类为静态工厂方法。但是,这是 design 分类,与Java语言本身无关。
答案 1 :(得分:5)
构造函数不能为静态,不能返回任何内容。 所以,这是一种方法。
答案 2 :(得分:1)
否,请参见jls 8.8
在所有其他方面,构造函数声明看起来像 没有结果的方法声明(第8.4.5节)。
....
与方法不同,构造函数不能为抽象,静态,最终, 本机,strictfp或同步
方法名称应重命名为builder
答案 3 :(得分:0)
该方法使用其默认构造函数Builder
返回Builder()
的新实例。
答案 4 :(得分:0)
使用Static Factory Method
,而不是构造函数。
答案 5 :(得分:0)
这是一种使用无参数构造函数(默认构造函数)返回Builder实例的方法。
除此之外,下面是构造构造函数的规则