使用compose()而不是lambda表达式的任何原因?

时间:2017-03-29 11:47:03

标签: java java-8

我正在比较compose()默认方法与其等效lambda表达式的使用,并且找不到任何更喜欢前者的理由。

可能原因与代码表达或函数式编程有关,如指向here

然而,比较解决问题How to do function composition?的两种方法,我发现使用compose()而不是lambda表达式只会有缺点。

compose()根据accepted answer的第一种方法:

Function<Person, Address> personToAddress = Person::getAddress;
Function<Address, String> addressToCountry = Address::getCountry;
Function<Person, String> toCountry = addressToCountry.compose(personToAddress);

使用lambda表达式的第二种方法:

Function<Person, String> toCountry = p -> p.getAddress().getCountry();

为什么我更喜欢第二个?首先,它不那么冗长。其次,它不需要显式辅助变量personToAddressaddressToCountry

那么,有没有理由使用compose()而不是显式使用lambda?

1 个答案:

答案 0 :(得分:2)

一个原因是如果你不在同一段代码中创建一个或者两个函数,而是从其他地方传入它们。然后你可以写一个在给定函数上调用apply()的lambda,或者使用compose(),这可能更干净。