代码重构,为了确保功能的等效性,梳理代码时,发现如下代码:
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 }
问题:
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接口分析
问题答案: