我不是昨天才开始学习 Java,而是突然想到,如果我们可以返回 this
,为什么还要使用 void
方法?这样我们就可以在对象上链接方法调用并使代码更具可读性(我知道这种方法已经越来越流行,但主要是针对不可变对象(immutable对象),让我们忘记 Java Beans 约定)。我认为唯一需要 void
的情况是静态方法。
最佳答案
想必您会接受某些方法需要告诉您一些信息 - 某种返回值。我们会“返回我们想要返回的值,除非我们实际上不想返回任何东西,在这种情况下我们返回 this
,除非它是一个静态方法,这似乎是人为的和迟钝的,在这种情况下,我们返回 void
”。
怎么样:
- 如果适合返回,就返回
- 如果不是,那就不要
- (对于“流畅”的 API 真正有意义的情况有一些回旋余地)
另外:想想继承;如果我有一个虚拟方法 Foo()
,那么返回类型必须是 Foo
的声明类型:
public virtual SomeType Foo() {...}
现在假设我将 SomeType
子类化为 Bar : SomeType
并且有一个 Bar
的实例:
Bar obj = new Bar();
obj.Foo().SomeOtherMethodOnBar(); // ERROR hey, where did my Bar go!?!?!
多态性不尊重流畅的 API。
作为最后的想法:当您实际上不想链接方法时,想想所有的“pop”...
关于c# - 为什么我们需要 OOP 语言中方法的 void 返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16540412/