Is there a way in Java8 to use a method reference as a Function
object to use its methods, something like:
Stream.of(\"ciao\", \"hola\", \"hello
You should be able to achieve what you want inline by using casts:
Stream.of("ciao", "hola", "hello")
.map(((Function) String::length).andThen(n -> n * 2))
There are only 'type hints' for the compiler, so they don't actually 'cast' the object and don't have the overhead of an actual cast.
Alternatively, you can use a local variable for readability:
Function fun = String::length
Stream.of("ciao", "hola", "hello")
.map(fun.andThen(n -> n * 2));
A third way that may be more concise is with a utility method:
public static Function chain(Function fun1, Function fun2)
{
return fun1.andThen(fun2);
}
Stream.of("ciao", "hola", "hello")
.map(chain(String::length, n -> n * 2));
Please note that this is not tested, thus I don't know if type inference works correctly in this case.