个人认为 是一种简化代码的一种方法 让代码看着更简洁 更舒服
无参数:()->一行表达式....;
一个参数:a->一行表达式....;
多个参数(a,b,...n)->{表达式};
()
只有一个参数的情况下才可以省略
{}
只有一行表达式的情况下才可以省略
package day02; /* * 推导lambda表达式 * * 函数式接口:任何接口 如果仅仅包含一个抽象方法 那么他就是一个函数式接口 * * 对于函数式接口 可以通过Lambda表达式来创建该接口的对象 * */ public class TestLambda { // 静态内部类 static class BoyIn implements Boy { @Override public void say() { System.out.println("静态内部类之我是一个男孩"); } } public static void main(String[] args) { // 直接调用 new BoyIn().say(); // 局部内部类 class BoyIn implements Boy { @Override public void say() { System.out.println("局部内部类之 我是一个男孩"); } } Boy boy = new BoyIn(); boy.say(); // 匿名内部类 没有类的名称 必须借助接口或者父类 boy = new Boy() { @Override public void say() { System.out.println(" 匿名内部类 之 我是一个男孩"); } }; boy.say(); // 用Lambda简化 boy = ()->{ System.out.println(" Lambda简化 之 我是一个男孩"); }; boy.say(); } } interface Boy { void say(); } // 定义一个实现类 class BoyIn implements Boy { @Override public void say() { System.out.println("我是一个男孩1"); } }
输出结果
当且仅当
任何接口只有一个
抽象方法的时候 才可以使用Lambda表达式
省去了大量的代码 让代码看着更简洁 执行效率更快