Java学习——JDK1.8新特性lambda表达式
今天我们来学习一下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需要前提:必须是函数式接口(只有一个方法的接口)