doSomething((Task)() -> System.out.println("Danger danger!!"));
来自于《Java8实战》
第八章
环境Java:1.8this和super的含义不同① 在匿名函数中this代表类自身,在lambda表达式中表示包含类;② 匿名类可以屏蔽包含类的变量,而lambda表达式不能。int a = 10;Runnable r1 = () -> { int a = 2; // 编译报错 System.out.println(a);};Runnable r2 = new Ru...
浅析匿名函数、lambda表达式、闭包(closure)区别与作用
所有的主流编程语言都对函数式编程有支持,比如c++11、python和java中有lambda表达式、lua和JavaScript中有闭包(closure)、ObjectC中有块(blocks,^)。那么这几个概念有什么共性和区别呢,只用普通函数不行吗,为什么要创造这些炫酷的概念呢?
一.匿名函数、lambda、clo...
():(形式参数)->{代码块};形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可;
->:由英文中画线和大于符号组成,写法固定,代表指向动作(箭头后面指向后面要做的事情);
{ }代码块,看出是方法体中的内容,具体要做的事情;
练习1:带参数无返回值
练习2:无参数有返回值;
练习3:带参数有返回值;
1、所需类型不同。匿名内部类:可以是接口、抽象类、具体类。Lambda表达式:只能是接口
2、使用限制不同。如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类。如果接口中多于一个抽象方法,只能使用匿名内部类,而不能使用Lambda表达式
3、实现原理不同。匿名内部类虽然跟使用Lambda效果一样,但是会自动多生成一个....
什么是函数式编程?
functional programming: It’s a way of thinking about software construction by creating pure functions.
函数是这种编程思想的根本 因此 Lambda expression在其中有很高的地位。
为啥要引入这些东西呢?
第一个就是简洁。因为匿名函数可以直接在函数内部定义 无需重新在外部定义。
第二个是可以捕获变量–这个是什么?
lambda和闭包有什么区别呢?
lambda是没有名字的函数
resolution will not be reattempted until the update interval of XXX has elapsed or updates are force
114646