请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术交流,必有回复!

疯狂Java联盟

 找回密码
 加入联盟
查看: 222|回复: 0

[疯狂Java讲义] 学习求助

[复制链接]
发表于 2020-4-1 20:37:22 | 显示全部楼层 |阅读模式
public class CommandTest
{
       //程序的主入口方法
       public static void main(String[] args)
       {
              //在静态方法中使用new关键字调用类的无参数构造器创建对象
              ProcessArray pa = new ProcessArray();
              //定义并初始化数组
              int[] target = { 3 ,4,-4,9};
              //使用匿名内部类作为参数传入方法
              pa.process(target,new Command()
                      {
                                public void process(int[] target)
                                {
                                         int sum = 0;
                                         //使用foreach遍历数组元素
                                         for ( int tmp : target)
                                         {
                                                  //每次遍历都求和
                                                  sum += tmp;
                                         }
                                         System.out.println("数组元素的总和是:" + sum);
                                }
                      } );
       }
}
我的问题是:
      疯狂JAVA讲义第二版说下面代码是与上面最后pa.process();可改写为下面形式:
                    pa.process(array , (int[] target)->{
                              int sum = 0;
                              for (int tmp : target)
                              {
                                        sum += tmp;
                              }
                              System.out.println("数组元素的总和是:" + sum);
                     });
其中原代码中pa.process();第一个形参与匿名内部类传入的形参是一样的,但是在改写代码中,pa.process();第一个形参和Lambda表达式中传入的形参不一样,为什么?是不是说Lambda表达式会自动搜索代码中的同类成员变量然后自动传入表达式?
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

微信群请扫二维码
QQ交流1群:
545923995
(未满)

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11094030号 )

GMT+8, 2020-5-27 21:41 , Processed in 0.196136 second(s), 6 queries , File On.

快速回复 返回顶部 返回列表