How to do function composition?

后端 未结 2 1870
甜味超标
甜味超标 2020-12-01 13:50

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

相关标签:
2条回答
  • 2020-12-01 14:23

    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)
    
    0 讨论(0)
  • 2020-12-01 14:24

    There is a default interface function Function::andThen and Function::compose:

    Function<Person, String> toCountry = personToAddress.andThen(addressToCountry);
    
    0 讨论(0)
提交回复
热议问题