Java 8 Lambda 表达式和函数式接口最佳实践

发布于 2024-11-16 17:59:01 字数 990 浏览 5 评论 0

Java 8 在 java.util.function 包中,定义了大量现成可用的函数式接口,使得我们在使用 lambda 表达式时,可以避免大部分的函数式接口编码工作。

函数式接口

函数式接口 :只有一个抽象方法的接口。

最佳实践:

  • 使用 @FunctionalInterface 注解。使用该注解后,编译器就会在编译时检查这个接口是否符合函数式接口规范
  • 避免使用函数式接口进行方法重载。比如使用 Callable<V> (计算并得到一个结果;如果无法计算则抛出异常)和 Supplier<T> (获取一个结果)作为参数进行方法重载时,明显会出错

Lambda 表达式 vs 内部类

虽然我们在使用 Lambda 表达式时,其本质就是将内部类替换为 Lambda 表达式。但 Lambda 表达式并不等于内部类:

  • 内部类:拥有自己的 this 指向, this 指向内部类对象
  • Lambda 表达式:没有自己的 this 指向, this 指向封闭范围

这类似于 ES6 的箭头函数与普通函数的区别。

Lambda 表达式最佳实战

1、避免指定参数类型。

2、避免使用小括号将单个参数括起来。

3、在需要返回结果的单行 Lambda 表达式体中,避免使用 return 关键字和大括号。

4、若 Lambda 表达式只是简单地调用在其他地方已经实现了的方法时,可直接使用 方法引用

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

み零

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

qq_7J1imQ

文章 0 评论 0

《一串符号》

文章 0 评论 0

hls.

文章 0 评论 0

雅心素梦

文章 0 评论 0

塔塔猫

文章 0 评论 0

微信用户

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文