Lambda表达式和匿名内部类的区别


所属类型不同

  • 匿名内部类:可以是接口,抽象类,具体类

  • Lambda:只能是接口

使用限制不同

  • 如果接口中仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类

  • 如果接口中多于一个抽象方法,只能使用匿名内部类

实现原理不同

  • 匿名内部类:编译以后使用一个单独的.class字节码文件

  • Lambda表达式:编译以后没有单独的.class字节码文件。对应的字节码文件在运行时会动态生成。

  •