Lambda表达式和匿名类的区别:
1.所需类型不一样
匿名内部类:可以是 类,抽象类,接口
Lambda:必须是接口
2.抽象方法的数量不一样
匿名内部类:所需的接口中的抽象方法的数量是随意的
Lambda表达式:所需的接口中只能有一个抽象方法
3.实现原理不一样
匿名内部类:编译之后,产生一个单独的.class字节码文件
Lambda表达式:编译之后,没有一个单独的字节码文件。对应的字节码会在程序运行的时候生成。
简单演示代码
public class test04 {
public static void main(String[] args) {
//当作实际参数
rp(new sr() {
@Override
public void hesui() {
System.out.println("hesui11");
}
});
//lambda
rp(()->{
System.out.println("123321");
});
}
public static void rp(sr sr1) {
System.out.println(sr1);
}
interface sr {
public void hesui();
}
}