Java8 λ表达式学习整理 - Go语言中文社区

Java8 λ表达式学习整理


个人理解:λ表达式是一个匿名方法的实现,它的目标对象是一个(可以匹配到多个)函数式接口(不算上Object类中的方法只有一个自己的抽象方法的接口即函数式接口),这里的匿名方法是指函数式接口中唯一抽象方法。

即可以将λ表达式赋值给一个函数式接口,所以当方法的形参是一个函数式接口时可以通过λ表达式替换达到简化效果,而Java8以前都是采用内部类的方式

λ表达式使用场景

1、替换以前广泛使用的内部匿名类,如上面提到的Runable接口在Java8中就是一个典型的函数式接口,在新建一个线程时可有如下写法:

//之前的写法
Thread oldThread = new Thread( new Runnable () {
        @Override
        public void run() {
            System.out.println("This is from an anonymous class.");
        }
    } );
   //采用λ表达式的写法
    Thread newThread = new Thread( () -> {
        System.out.println("This is from an anonymous method (lambda exp).");
    } );

2、集合类批处理操作

集合类批处理操作是指实现集合类的内部迭代,即交由类库处理而非自己编写迭代/遍历代码

forEach是jdk8中Iterable新增的方法被关键字default修饰,Collection、List、Set直接或者间接实现了Iterable也就获得该默认实现的forEach方法,Map是在自己的接口里面加入了default类型的forEach,因为Map是key:value键值对形式的所以你会看到forEach方法接收的函数式接口类型是不一样的

 

推荐阅读:http://swiftlet.net/archives/3331

                 https://blog.csdn.net/aa8568849/article/details/52650452

                 https://segmentfault.com/a/1190000012213954

                 https://www.cnblogs.com/yulinfeng/p/8452379.html

                 https://blog.csdn.net/yangjiachang1203/article/details/52619795

                 https://blog.csdn.net/zixiao217/article/details/70196751

                 https://blog.csdn.net/dounine/article/details/53357914

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/dyr_1203/article/details/85006048
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 12:00:22
  • 阅读 ( 854 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢