Почему functionDemo3.test выдаст ошибку компиляции, то есть несовместимые типы: java.lang.Object невозможно преобразовать в java.lang.String? А functionDemo.test и functionDemo2.test этого не делают.
import java.util.function.Function;
public class FunctionTemplateDemo {
public Object sayHello(String name) {
return "hello " + name;
}
public static void main(String[] args) {
FunctionTemplateDemo functionDemo = new FunctionTemplateDemo();
functionDemo.test(functionDemo::sayHello);
FunctionTemplateDemo functionDemo2 = new FunctionTemplateDemo();
functionDemo2.test(functionDemo::sayHello);
FunctionTemplateDemo functionDemo3 = new FunctionTemplateDemo();
functionDemo3.test(functionDemo::sayHello);
}
private void test(Function function) {
Object hello = function.apply("hello");
System.out.println("say: " + hello);
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... -reference