这是方法还是构造函数?

时间:2018-09-06 10:34:04

标签: java

我正在阅读别人的代码,并被以下代码片段弄糊涂了:

public static Builder Builder() {
        return new Builder();
    }

这是一个构造函数吗?构造函数通常没有“ return”语句。常规方法不使用大写的“ Builder()”。我很困惑。

6 个答案:

答案 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实例的方法。

除此之外,下面是构造构造函数的规则

  1. 类的构造函数的名称必须与其所在的类名称相同。
  2. Java中的构造函数不能是抽象的,最终的,静态的和同步的。
  3. 访问修饰符可用于构造函数声明中,以控制对其的访问,即其他类可以调用构造函数。