Method references are just a syntactic sugar for a function that uses passed parameter as an input argument. So, you can assign them this way:
Runnable runnable = System.out::println;
Consumer consumer = System.out::println;
types are inferred and depend on a context.
Your case:
Function foo = helloGreeter::makeGreetingFor;
and it is equal to:
Function foo = s -> helloGreeter.makeGreetingFor(s);