Java- Lambda表达式
来源:互联网 发布:ise女装官网淘宝网 编辑:程序博客网 时间:2024/06/05 18:41
Lambda表达式(λ expression)
- Lambda表达式(Java 8)的基本写法:
(param) -> result
,其中参数可以是()或一个参数以上,结果是指 表达式 或 语句 或{语句 }
如:(string s) -> s.length
x -> x*x
() -> { System.out.println("aa); }
- 大体上相当于其他语言的”匿名函数“或”函数指针”
- 在Java中它实际上是”匿名类的一个实例”
class LambdaRunnable { public static void main(String argv[]) { Runnable doIt = new Runnable(){ public void run(){ System.out.println("普通的写法"); } }; new Thread( doIt ).start(); // 本质是上匿名类的实例 Runnable doIt2 = ()-> System.out.println("简单的写法"); new Thread( doIt2 ).start(); new Thread( ()->System.out.println("更简单的写法") ).start(); }}-----------OUTPUT-----------普通的写法简单的写法更简单的写法
- 可以看出:Lambda表达式是接口或者说是接口函数的简写。
public static void main(String[] args) { double d = Integral( new Fun(){ public double fun(double x){ return Math.sin(x); } }, 0, Math.PI, 1e-5 ); d = Integral( x->Math.sin(x), 0, Math.PI, 1e-5 ); System.out.println( d ); d = Integral( x->x*x, 0, 1, 1e-5 ); System.out.println( d ); }
- 由此可见:Lambda**大大地简化了书写**
能写出Lambda的接口条件
- 由于Lambda只能表示一个函数,所以,能写出Lambda的接口要求:
- 包含且至多包只能包含一个*抽象函数*
- 这样的接口可以(但不强求)用注记
@FunctionalInterface
来表示,称为函数式接口- 如:
@functionalInterface interface Fun{ double fun(double x); }
- 由此更可看出,Lambda表达式,不仅仅是简写了代码,更为重要的是:
- 它将代码也当成数据来处理,实现了一定的函数式编程。
0 0
- Java Lambda表达式入门
- Java 8 lambda表达式
- Java Lambda表达式入门
- java之Lambda表达式
- Java Lambda表达式例子
- Java Lambda表达式入门
- Java- Lambda表达式
- Java Lambda表达式入门
- Java Lambda表达式入门
- Java lambda表达式初探
- JAVA Lambda表达式教程
- Java Lambda表达式
- java中的->:Lambda表达式
- Java之lambda表达式
- Java Lambda表达式入门
- Java Lambda表达式
- java lambda表达式
- Java Lambda表达式入门
- 判断带头结点的单链表中是否有环
- prototype原型
- Qt Animation
- 文章标题
- 为自己而留的
- Java- Lambda表达式
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 1) B
- hdu 2255 奔小康赚大钱(完美最大权匹配 KM算法)
- CCAnimation源码解析
- 基于opencv的神经网络算法实现两类分类问题的可视化演示
- HDU 1997 汉诺塔VII(递归)
- 使用不带头结点的循环链表实现队列(数据结构)
- QTcpSocket 编程
- Linux 操作系统下如何优雅的卸载软件