要点:lambda表达式的使用,有个前提是对一个函数式接口的实现简化.所谓函数式接口,就是一个接口内只有一个抽象方法
创建一个函数式接口
从外部类实现接口,到静态内部类,到局部内部类,到匿名内部类,最后到lambda表达式的使用,是对代码逐渐的简化
package lambda;
/**
* 推导lambda表达式
* 函数式接口----必须是一个接口里只有一个方法 比如Runnable接口
*/
public class TestLambda {
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
//4.局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I Like lambda3");
}
}
like = new Like3();
like.lambda();
//5.匿名内部类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I Like lambda4");
}
};
like.lambda();
//6.用lambda简化
like = ()->{
System.out.println("I Like lambda5");
};
like.lambda();
}
//3.静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda2");
}
}
}
//1.定义一个函数式接口
interface ILike{
void lambda();
}
//2.实现接口
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda");
}
}
这个lambda表达式的推导,确实给了我一番耳目一新的感觉,别人总说lambda表达式很简单,但是自己看过了用到的机会很少,所以总是记不住,但是通过这个真的是印象太深刻了