为了账号安全,请及时绑定邮箱和手机立即绑定

java lambda函数复合的一个问题?

java lambda函数复合的一个问题?

慕运维8079593 2019-02-28 03:56:20
public class Letter { public static String addHeader(String text) { return "head " + text; } public static String addFooter(String text) { return text + " foot"; } public static String checkSpelling(String text) { return text.replaceAll("123", "lambda"); } public static void main(String[] args) { Function<String, String> addHeader = Letter::addHeader; Function<String, String> stringStringFunction = addHeader.andThen(Letter::checkSpelling).andThen(Letter::addFooter); String wan_lbdb = stringStringFunction.apply("123"); System.out.println(wan_lbdb); } } 这段代码为什么输出的是head lambda foot头尾的123为什么没有输出
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

Function

R apply(T t) – 将Function对象应用到输入的参数上,然后返回计算结果。

default <V> Function<T,V> andThen(Function<? super R,? extends V> after) 返回一个先执行当前函数对象apply方法再执行after函数对象apply方法的函数对象。

Function<String, String> addHeader = Letter::addHeader;
Function<String, String> stringStringFunction = addHeader.andThen(Letter::checkSpelling).andThen(Letter::addFooter);
String wan_lbdb = stringStringFunction.apply("123");
System.out.println(wan_lbdb);

andThen 是在 addHeader 增加后续要执行的函数对象

也就是 (stringStringFunction) = addHeader -> checkSpelling -> addFooter 这样的执行顺序

stringStringFunction.apply("123")

addHeader -> checkSpelling -> addFooter = head lambda foot

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 434 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号