为了账号安全,请及时绑定邮箱和手机立即绑定

这是一个方法还是一个构造函数?

这是一个方法还是一个构造函数?

忽然笑 2021-09-03 10:57:47
我正在阅读别人的代码并被这个片段弄糊涂了:public static Builder Builder() {        return new Builder();    }这是构造函数吗?构造函数通常没有“返回”语句。常规方法不使用大写的“Builder()”。我很困惑。
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

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

    /* optional modifiers */ Builder()

是一个构造1Builder,但

    /* optional modifiers */ Builder Builder()

是一个名为的方法Builder,它返回一个Builder对象。这也是一种严重的风格违规,因为 Java 方法应该以小写字母开头。除此之外,这使人类更容易区分方法和构造函数!(虽然编译器不在乎...)

还有其他的故事。一些修饰符允许用于方法,但不允许用于构造函数。以static修饰符为例。

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


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

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


查看完整回答
反对 回复 2021-09-03
?
12345678_0001

TA贡献1802条经验 获得超5个赞

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


查看完整回答
反对 回复 2021-09-03
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

不,请参阅jls 8.8

在所有其他方面,构造函数声明看起来就像一个没有结果的方法声明(第 8.4.5 节)。

....

与方法不同,构造函数不能是抽象的、静态的、最终的、本地的、strictfp 或同步的

方法名称应重命名为 builder


查看完整回答
反对 回复 2021-09-03
  • 3 回答
  • 0 关注
  • 193 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信