码迷,mamicode.com
首页 > 其他好文 > 详细

lambda表达式简述

时间:2018-03-31 14:22:44      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:alt   pos   uri   void   i++   col   file   interface   consumer   

一、什么是lambda表达式

  lambda表达式的类型是一个接口类型,而lambda表达式本身的代码就是接口的实现,即lambda表达式是一个接口的实现。对于只有一个抽象方法的接口,需要这种接口的对象时,就可以提供一个lambda表达式,这种接口又被称为函数式接口,我们可以在该接口前声明@FunctionalInterface进行注解,这样就无法添加新的接口方法。lambda表达式又被称作匿名函数,也称闭包, 和匿名内部类类似,不过比匿名内部类更为简洁,在实现事件监听和回调,往往会用lambda表达式代替匿名内部类。

二、lambda表达式的用途

  1. lambda表达式可以让代码变得十分简洁

    我们知道通常实现接口是通过创建一个类并实现接口,然后通过实例化该类创建对象并调用接口的方法,而通过lambda表达式直接传递对象则极为方便。并且,由于lambda表达式可以直接赋值给一个变量,这样就可以直接把表达式作为参数传给特定方法,而传统的则必须实现接口的定义才能传递。

(图片转自:https://www.zhihu.com/question/20125256)

技术分享图片

  2. 可以延迟执行(deferred execution)。

    如果想要立即执行代码,这种情况是无需使用lambda表达式中,而是希望以后多次执行代码,在适当位置执行代码(Comparator),发生某种情况执行代码(event)。而要使用某些lambda表达式就得选择一个函数式接口,有常用函数式接口供选择。

            java.lang.Runnable

            java.util.concurrent.Callable

            java.security.PrivilegedAction

            java.util.Comparator

            java.io.FileFilter

            java.nio.file.PathMatcher 

            java.lang.reflect.InvocationHandler

            java.beans.PropertyChangeListener

            java.awt.event.ActionListener  

            javax.swing.event.ChangeListener

 

1         public interface IntConsumer {
2             void accept(int value);
3         }
4         public static void repeat(int n, i ->     
5             System.out.println("Countdown:" + (9 - i))) {   //IntConsumer action = i -> System.out.println("Countdown:" + (9 - i))
6             for (int i = 0; i < n; i++) {
7                 action.accept(i);
8             }
9          }

三、lambda表达式格式

(图片转自:https://www.zhihu.com/question/20125256)

技术分享图片

 

lambda表达式简述

标签:alt   pos   uri   void   i++   col   file   interface   consumer   

原文地址:https://www.cnblogs.com/chenloveslife/p/8681820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!