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

然后在消费者接口中使用 lambda

然后在消费者接口中使用 lambda

精慕HU 2022-10-26 16:24:06
我可以用 lambdas 链接 andThen 吗?我知道我可以这样做:myList.forEach(myConsumer1.andThen(myConsumer2));但是如果我想提供一个 lambda(e)->{ some actions }而不是myConsumer1和另一个 lambda (e)->{ some more actions }而不是myConsumer2呢?我试过了,但它不起作用。但是一般来说有可能吗 - 也许我不知道正确的语法。PS我的问题(从实际角度来看)与标记为“可能已经回答”的问题不同 - 它完全不同,链接的帖子对我的问题没有实际有用的信息 - 我不知道如何描述鳄鱼是不同于爱情。
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

您可以这样做,但您需要显式转换 lambda 表达式。

您示例中的 lambda 表达式(e)->{ some actions }不一定是Consumervoid accept(T t);它可能是您自己的功能接口,具有与from相同的签名Consumer,但没有andThen方法。编译器不知道这一点。所以你需要帮助编译器:

list.forEach(((Consumer<Integer>) e -> someAction).andThen(i -> someMoreAction));


查看完整回答
反对 回复 2022-10-26
?
长风秋雁

TA贡献1757条经验 获得超7个赞

是的,您可以这样做,但它需要正确转换 lambda。


      int[] val = { 23

      };

      Consumer<Integer> con = ((Consumer<Integer>) (a) ->

      {

         for (int i = 1; i < a; i++) {

            val[0] += i;

         }

      }).andThen((b) -> System.out.println(val[0] * b));


      con.accept(10);


查看完整回答
反对 回复 2022-10-26
  • 2 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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