Это касается вызова ссылки на метод, в лямбде мы можем сделать ссылку на метод, имеющий другой тип возвращаемого значения. См. Ниже код -
interface Sayable {
void say();
}
class SayableImpl implements Sayable {
@Override
public boolean say() {
// error wrong return type
}
}
public class MethodReference {
public static boolean saySomething() {
System.out.println("Hello, this is static method.");
return true;
}
public static void main(String[] args) {
MethodReference methodReference = new MethodReference();
Sayable sayable = () -> methodReference.saySomething();
sayable.say();
// Referring static method
Sayable sayable2 = MethodReference::saySomething;
sayable2.say();
}
}
Здесь мы реализуем метод void say()
с MethodReference::saySomething()
, тип возвращаемого значения которого boolean
.
Как мы это оправдываем? Я что-то упустил?