为什么Java不能以返回值区分重载方法?

时间:2021-08-07 00:29:29

  读者可能会想:“在区分重载方法的时候,为什么只能以类名和方法的形参列表作为标准呢?能否考虑用方法的返回值来区分呢?”

  比如下面两个方法,虽然他们有相同的名字和形式参数,但却很容易区分他们:

void f() {}
int f() { return 1; }

  如果编译器可以根据语境明确判断出语义,比如在int x = f()中,那么的确可以据此区分重载方法。

  不过,有时候你并不关心方法的返回值,你想要的是方法调用的其他效果(这常被称为“为了副作用而调用”),这时候你可能会调用方法而忽略其返回值。

  所以,如果想下面这样的调用方法:

f();

  此时Java该如何才能判断调用哪一个f()呢?别人该如何理解这种代码呢?

  因此,根据方法的返回值来区分重载方法是行不通的。