Java- Lambda表达式
2015-08-24 23:14
429 查看
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表达式,不仅仅是简写了代码,更为重要的是:
它将代码也当成数据来处理,实现了一定的函数式编程。
相关文章推荐
- java中的权限修饰
- java 类加载机制(详解)
- Java 编程语言支持三种循环构造类型
- JAVA多线程与并发学习总结
- SpringMVC介绍之Validation
- Spring3+SpingMVC+Hibernate4全注解环境配置
- java新手笔记32 jdk5新特性
- java 继承编程题
- java 第一天---算法/ 流程图
- 04 java.lang.Byte
- java线程学习(三)—java内存模型
- MyBatis教程之与Spring3集成和Spring3 Mvc集成
- Java 读取目录下的所有文件
- Java 中的方法重载与方法覆盖
- Intellij IDEA Java web 项目搭建
- JAVA问题总结之5-易错点之连接符和加号分析
- Java心得20
- Java中常见的几个乱码问题以及解决方法
- java String 的一些用法
- spring整合activeMQ之动态注入