While rather impatiently waiting for Java 8 release and after reading brilliant \'State of the Lambda\' article from Brian Goetz I noticed that function composition was not
There is one flaw in using compose
and andThen
. You have to have explicit variables, so you can't use method references like this:
(Person::getAddress).andThen(Address::getCountry)
It won't be compiled. What a pity!
But you can define an utility function and use it happily:
public static <A, B, C> Function<A, C> compose(Function<A, B> f1, Function<B, C> f2) {
return f1.andThen(f2);
}
compose(Person::getAddress, Address::getCountry)
There is a default interface function Function::andThen
and Function::compose
:
Function<Person, String> toCountry = personToAddress.andThen(addressToCountry);