/* Lambda表达式:JDK8开始的一种新的语法形式 作用:简化匿名内部类的代码写法 格式: () -> {} (): 匿名内部类被重写方法的形参列表 {}: 被重写方法的方法体代码 注意:Lambda表达式,只允许操作函数式编程接口(有且仅有一个抽象方法的接口) */ public class LambdaTest { public static void main(String[] args) { useInterA(new InterA() { @Override public void show() { System.out.println("匿名内部类重写后的show方法..."); } }); System.out.println("---------------------------"); useInterA(() -> { System.out.println("Lambda表达式重写后的show方法..."); }); } public static void useInterA(InterA a) { a.show(); } } interface InterA { void show(); } /* Lambda表达式的省略写法: 1.参数类型可以省略不写 2.如果只有一个参数,参数类型可以省略,同时()也可以省略 3.如果Lambda表达式的方法体代码只有一行代码,可以省略大括号不写,同时省略代码尾部分号 4.如果只有一行代码且为return语句,则必须省略return不写 */
public class AnonInnerAndLambda { /* Lambda表达式和匿名内部类的区别: 使用限制不同: 匿名内部类:可以操作类、接口 Lambda表达式:只能操作函数式接口 实现原理不同: 匿名内部类:编译之后,产生一个单独的.class字节码文件 Lambda表达式:编译之后,没有一个单独的.class字节码文件 */ }