这是方法还是构造函数?

use*_*911 2 java

我正在阅读其他人的代码,并对此代码段感到困惑:

public static Builder Builder() {
        return new Builder();
    }
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*n C 7

区分构造函数和方法的关键特性是返回类型.所以

    /* optional modifiers */ Builder()
Run Code Online (Sandbox Code Playgroud)

是一个构造1对Builder,但

    /* optional modifiers */ Builder Builder()
Run Code Online (Sandbox Code Playgroud)

是一个Builder返回Builder对象的命名方法.它也是一种令人震惊的样式违规,因为Java方法应该以小写字母开头.除此之外,这使人类更容易区分方法和构造函数!(虽然编译器并不关心...)

还有其他的说明.方法允许使用某些修饰符,但构造函数不允许.static例如,修饰符.

简而言之,您的示例是方法2.


1 - 请注意,构造函数名称必须与封闭的类名称匹配.但是如果你弄错了,编译器仍会在编译错误中将其称为构造函数.

2 - 我们可以进一步将其归类为静态工厂方法.但是,这是一种设计分类,与Java语言本身无关.


Nis*_*hit 5

构造函数不能是静态的,不能返回任何东西.所以,这是一种方法.