Spring8中lambda表达式的学习(Function接口、BiFunction接口、Consumer接口)

代码重构,为了确保功能的等效性,梳理代码时,发现如下代码:

 1 public  SingleRespTTO fundI(SingleReqTTO request) throws Exception {
 2     return handlerSingleReq((req, logInfo) -> {
 3        
 4         // 业务操作
 5         ....略....
 6     }, request);
 7 }
 8 
 9 public SingleRespTTO handlerSingleReq(BiConsumer<SingleReqTTO, SingleRespTTO> consumer,
10                                           SingleReqTTO request) throws Exception {
11     // 业务操作
12     consumer.accept(request, respTTO);
13         ....略....
14     return respTTO;
15 }
View Code

问题:

fundI(SingleReqTTO request)方法实现很简单:

直接调用handlerSingleReq(BiConsumer<SingleReqTTO, SingleRespTTO> consumer,SingleReqTTO request)方法并返回,而handlerSingleReq的参数1 consumer是个lambda表达式:

(req, logInfo) -> {
    // 业务操作
    ....略....
}

1、lambda方法参数是啥

这个lambda表达式有2个参数:req, logInfo,这是哪来的?

2、方法执行顺序是啥

lambda作为参数,包含有方法体(很明显还是个内部实现),先执行该lambda的内部逻辑呢还是先执行的handlerSingleReq方法体呢?

解析:

lambda的三个概念:Function接口、BiFunction接口、Consumer接口分析

问题答案:

猜你喜欢

转载自www.cnblogs.com/huahua035/p/10132289.html