4

不是昨天才开始学Java,而是突然想void,如果可以return,为什么还要用方法this呢?通过这种方式,我们可以链接对象上的方法调用并使代码更具可读性(我知道这种方法已经越来越流行,但主要用于不可变对象,让我们忘记Java Beans约定)。我认为唯一void需要的情况是静态方法。

4

1 回答 1

14

大概你会接受一些方法需要告诉你一些东西——某种返回值。我们会“返回我们想要返回的值,除非我们实际上不想返回任何东西,在这种情况下我们会返回this,除非它是一个静态方法,在这种情况下我们会返回void”,这似乎是人为和迟钝的。

怎么样:

  • 如果适合退货,那就退货
  • 如果不是,那么不要
  • (对于“流利的”API 真正有意义的情况有一些回旋余地)

另外:认为继承;如果我有一个虚拟方法Foo(),那么返回类型必须是Foo声明类型:

public virtual SomeType Foo() {...}

现在想象我的子类SomeTypeBar : SomeType并有一个实例Bar

Bar obj = new Bar();
obj.Foo().SomeOtherMethodOnBar(); // ERROR hey, where did my Bar go!?!?!

多态性不尊重流畅的 API。

作为最后的想法:当你实际上不想链接方法时,想想所有的“pop”......

于 2013-05-14T10:15:09.353 回答