JAVA 1.8 新特性学习(2) lambda表达式
2016-04-16 14:47
791 查看
λ表达式本质上是一个匿名方法,我们来看一下这个例子。在java1.7中,我们这样写代码:
输出 My Name is John
当使用java1.8以后,我们可以使用λ表达式,代码如下:
λ表达式的目标类型是“函数接口”,这是java1.8的新概念。它的定义是:一个接口,如果只有一个显式声明的抽象方法,那么它就是一个函数接口。可以用@FunctionalInterface标注出来。也可以不标注。
注意,这个接口必须只有一个显式声明的抽象方法,其实也比较好理解,在λ表达式中我们根本没有写方法的名称,如果有多个显式的抽象方法的话,那么λ表达式怎么知道应该应用在哪个方法呢?
其实λ表达式的用法非常广泛,这里只是简单介绍一下,也是用的比较多的场景之一。
interface Names { public void sayName(String name); } public class NameExample { public static void main(String[] args) { Names nameInstance = new Names() { @Override public void sayName(String name) { System.out.println("My Name is " + name); } }; myName(nameInstance, "John"); } private static void myName(Names nameInstance, String name) { nameInstance.sayName(name); } }
输出 My Name is John
当使用java1.8以后,我们可以使用λ表达式,代码如下:
interface Names { public void sayName(String name); } public class NameExample { public static void main(String[] args) { Names nameInstance = name -> System.out.println("My Name is " + name); myName(nameInstance, "John"); } private static void myName(Names nameInstance, String name) { nameInstance.sayName(name); } }
λ表达式的目标类型是“函数接口”,这是java1.8的新概念。它的定义是:一个接口,如果只有一个显式声明的抽象方法,那么它就是一个函数接口。可以用@FunctionalInterface标注出来。也可以不标注。
注意,这个接口必须只有一个显式声明的抽象方法,其实也比较好理解,在λ表达式中我们根本没有写方法的名称,如果有多个显式的抽象方法的话,那么λ表达式怎么知道应该应用在哪个方法呢?
其实λ表达式的用法非常广泛,这里只是简单介绍一下,也是用的比较多的场景之一。
相关文章推荐
- java 绘制一个全屏的三角形
- java web中路径问题。
- JavaWeb总结(八)—EL表达式
- Java 详解浅拷贝&&深拷贝
- Eclipse卸载安装的插件
- java之servlet
- Sprng MVC异常处理总结
- JAVA基础学习一些总结
- DL4J (DeepLearning for java)
- JAVA初学,对面向对象的一点理解
- java Swing JTable 隐藏某列
- java基础(六),异常
- 【并发编程】java.lang.Thread.UncaughtExceptionHandler
- Spring web.xm spring-context spring-mvc
- Java中super的几种用法并与this的区别
- Spring AOP 学习例子
- Java Web 基础环境搭建
- Java集合(五):Set集
- spring annotation
- Java基础(容易忽略的java细节)