Вы всегда можете написать лямбда-выражение не лямбда-способом
с анонимным классом, содержащим реализацию одного абстрактного метода.
Применительно к вашему примеру вы можете написать метод
default Op combinedOp(Op secondOperation) {
return ()->{secondOperation.runOp();};
}
не лямбда-образом, как это:
default Op combinedOp(Op secondOperation) {
return new Op() {
@Override
public void runOp() {
secondOperation.runOp();
}
};
}
Теперь стало понятнее, что метод combinedOp
возвращает что-то,
то есть экземпляр интерфейса Op
.
Однако метод runOp
этого экземпляра ничего не возвращает.
Следовательно, его тип возвращаемого значения void
.