匿名内部类和lambda表达式区别

2023-08-19 21:48:20 0 0 编辑:亿网科技有限公司 来源:本站原创

匿名内部类和lambda表达式都可以用来实现一个函数接口(Functional Interface)的实例,它们的主要区别如下:

匿名内部类和lambda表达式区别

1. 语法形式:匿名内部类是java的一种特性,语法形式比较冗长,需要使用关键字、大括号、分号等,使用起来稍显繁琐。而lambda表达式是从JDK8开始引入的,语法简单,可以看作是对匿名内部类的一种简化和优化。

2. 对上下文变量的捕获:匿名内部类中可以访问外部类的成员变量、方法参数和本地变量,它们的值都可以在匿名内部类中被修改。而lambda表达式中只能捕获最终变量或者是事实上的最终变量(final或者等价于final),也就是只能读取外部变量,不能修改。如果需要修改则使用会报编译错误。

3. 类型推导和函数接口:在使用lambda表达式时,JDK8可以推导出lambda表达式的参数类型和返回类型。因此,使用lambda表达式时不需要显示声明类型。而匿名内部类需要显式地声明接口和类类型。

匿名内部类和lambda表达式区别

4. 代码量:lambda表达式的语法更加精简,代码量相对较小,而且可读性更强,降低了程序员的输入疲劳度。而匿名内部类语法冗长,代码量较大。

总之,lambda表达式是一种更为优雅简洁的编程方式,而匿名内部类则依旧存在一定的应用场景,例如需要访问外部类的成员变量,或者需要实现一些非函数接口的抽象方法等。

关键词: 车内 躯体 脍不 信阳 如何 人参 观赏 cwm 菊花 美满 恶缘 使民
本站文章均为<亿网科技有限公司>网站建设摘自权威资料,书籍,或网络原创文章,如有版权纠纷或者违规问题,请即刻联系我们删除,我们欢迎您分享,引用和转载,我们谢绝直接复制和抄袭!
我们猜你喜欢