本文共 2218 字,大约阅读时间需要 7 分钟。
今天我们来学习一下JDK1.8的一个新特性——lambda表达式,lambda表达式的产生其实是为了简化代码的,我们来看下lambda的推导过程:
外部类—>静态内部类—>局部内部类—>匿名内部类—>lambda
1.外部类:最开始我们使用外部类
//外部接口(函数式接口);函数式接口的意思式,接口中只有一个方法interface Ilike{ void like();}//1.外部类class Like implements Ilike{ @Override public void like() { System.out.println("lambda----->01"); }}public class Lambda { public static void main(String[] args) { //实例化外部类 Like l = new Like(); //调用方法 l.like(); }}//输出: lambda----->01
2.静态内部类:然后我们为了简化,将外部类放到类的内部来,并加上static关键字就成了静态内部类
//外部接口(函数式接口);函数式接口的意思式,接口中只有一个方法interface Ilike{ void like();}public class Lambda { //2.静态内部类类 static class Like implements Ilike{ @Override public void like() { System.out.println("lambda----->02"); } } public static void main(String[] args) { //实例化外部类 Like l = new Like(); //调用方法 l.like(); }}//输出: lambda----->02
3.局部内部类:然后我们还是觉得不够简单,就把类放到方法里,形成了局部内部类
//外部接口(函数式接口);函数式接口的意思式,接口中只有一个方法interface Ilike{ void like();}public class Lambda { public static void main(String[] args) { //3.局部内部类类 class Like implements Ilike{ @Override public void like() { System.out.println("lambda----->03"); } } //实例化外部类 Like l = new Like(); //调用方法 l.like(); }}//输出: lambda----->03
4.匿名内部类:然后我们突然想到这个接口只有一个方法,可以使用匿名内部类简化代码:
//外部接口(函数式接口);函数式接口的意思式,接口中只有一个方法interface Ilike{ void like();}public class Lambda { public static void main(String[] args) { //匿名内部类 new Ilike() { @Override public void like() { System.out.println("lambda----->04"); } }; like.like(); }}//输出: lambda----->04
这样虽然简单,但是我们JDK1.8之后引入了一个新特性可以简化匿名内部类:lambda
5.lambda表达式://外部接口(函数式接口);函数式接口的意思式,接口中只有一个方法interface Ilike{ void like();}public class Lambda { public static void main(String[] args) { //lambda表达式 Ilike like=()->{System.out.println("lambda----->04");}; like.like(); }}
如果说只有一条实现语句,我们还可以将大括号去掉:
Ilike like = ()-> System.out.println("lambda------>04"); like.like();
当然lambda需要前提:必须是函数式接口(只有一个方法的接口)
转载地址:http://uaiwi.baihongyu.com/