ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
### [返回值的重载](https://lingcoder.gitee.io/onjava8/#/book/06-Housekeeping?id=%e8%bf%94%e5%9b%9e%e5%80%bc%e7%9a%84%e9%87%8d%e8%bd%bd) 经常会有人困惑,"为什么只能通过方法名和参数列表,不能通过方法名和返回值区分方法呢?"。例如以下两个方法,它们有相同的命名和参数,但是很容易区分: ~~~ void f(){} int f() {return 1;} ~~~ 有些情况下,编译器很容易就可以从上下文准确推断出该调用哪个方法,如`int x = f()`。 但是,你可以调用一个方法且忽略返回值。这叫做调用一个函数的副作用,因为你不在乎返回值,只是想利用方法做些事。所以如果你直接调用`f()`,Java 编译器就不知道你想调用哪个方法,阅读者也不明所以。因为这个原因,所以你不能根据返回值类型区分重载的方法。为了支持新特性,Java 8 在一些具体情形下提高了猜测的准确度,但是通常来说并不起作用。