当前位置: 首页 > news >正文

Java中的委托和拉姆达(表达式/语句)

所谓委托,主要指函数声明的一种方式。通常在函数作为参数时使用。

Java中现成的委托,语法还是比较啰嗦的。

image

可以看到,对不同个数的参数和返回值,有不同的写法。

 我们这里举个例子:

 1 import java.util.function.BiFunction;
 2 
 3 public class App
 4 {
 5     public static void main(String[] args) throws Exception
 6     {
 7         test(1,2,App::add);
 8         test(9,3,App::sub);
 9     }
10     public static int add(int a,int b) {
11         return a + b;
12     }
13     public static int sub(int a,int b) {
14         return a - b;
15     }
16     public static void test(int x,int y,BiFunction<Integer,Integer,Integer> f)
17     {
18         System.out.println(f.apply(x,y));
19     }
20 }

说明:函数test可以接受形如”int f(int x,int y)“的函数,作为参数。在内部运行它。

运行结果:3(换行)6


 

有时候没有现成的函数,需要临时随手写一个。就出现了拉姆达表达式和拉姆达语句。

拉姆达=lambda

要点:

1、拉姆达系列,其实就是匿名函数(没有名字的函数)。当需要函数做参数,该函数又不会在其他地方被调用的时候,就不用费心去给函数起名字。

2、拉姆达用关键字“->”来连接参数和函数体。

3、如果函数本身只有一条return语句,就可以省略花括号和“return”,以及后面的分号,这是拉姆达表达式。

4、多语句,则带上花括号和里面的一切,这是拉姆达语句。

例如,我想用上例中的test计算3*5,再计算4+5+6+...+17,可以这样写:

 1 import java.util.function.BiFunction;
 2 
 3 public class App
 4 {
 5     public static void main(String[] args) throws Exception
 6     {
 7         //lambda 表达式
 8         test(3, 5, (x, y) -> 3 * 5);
 9         //lambda 语句(块)
10         test(4, 17, (x, y) ->
11         {
12             int s = 0;
13             for (int i = x; i <= y; i++)
14             {
15                 s += i;
16             }
17             return s;
18         });
19     }
20 
21     public static void test(int x, int y, BiFunction<Integer, Integer, Integer> f)
22     {
23         System.out.println(f.apply(x, y));
24     }
25 }

 

结果略。

 

http://www.zskr.cn/news/39664.html

相关文章:

  • 2025年11月宝宝起名公司选择榜:舜缘居等五强对比解析
  • 2025年11月治疗失眠的专家推荐:市场报告与选择指南
  • 2025年11月治疗失眠的专家推荐:市场报告与榜单全解析
  • 2025年11月中国婚姻家事与财富管理律师评价榜:五强深度评测
  • 2025不锈钢提升机厂家选购参考:专注实用的优质厂家与选择逻辑
  • 2025年11月中国婚姻家事与财富管理律师排名榜:五强对比指南
  • Let`s Encrypt 生成免费自动续签 HTTPS 证书
  • ModbusRTU通信报文分析—功能码02读取输入线圈笔记
  • P12.常见的transforms(二)
  • AT_abc200_d [ABC200D] Happy Birthday! 2 题解报告
  • 杂题选做-4
  • 洛谷 P1780 染色的立方体 题解报告
  • 2025 年 11 月 PCD 铣刀厂家推荐排行榜,金刚石铣刀,聚晶金刚石铣刀,超硬刀具,高精度 PCD 铣刀公司推荐
  • 2025 年 11 月平面铣刀厂家推荐排行榜,钨钢平面铣刀,合金平面铣刀,数控平面铣刀,高精度平面铣刀公司推荐
  • 2025年11月适合初中生的学习机品牌排行:市场热销榜全维度评价
  • 《算法闯关指南:优选算法--滑动窗口》--15.串联所有单词的子串,16.最小覆盖子串 - 实践
  • 2025年11月适合初中生的学习机品牌评测:五款主流机型横向对比
  • 2025年11月教育资源好的学习机品牌推荐:榜单对比五强教育资源含金量
  • 【pytest】使用 marker 向 fixture 传递数据 - 指南
  • spug 运维工具
  • 2025年11月全屋定制环保材料公司排名:五强综合实力对比
  • React系列教程:1. 启动一个React项目
  • Discuz建站经验:Discuz论坛管理员怎么重置修改用户密码?
  • 2025年气凝胶绝热材料源头厂家权威榜单:气凝胶隔热涂料/屋顶隔热涂料/纳米涂层镀膜源头厂家精选
  • 数据库基准测试4:HammerDB测试脚本运用(for Oracle)
  • 多线程奇幻漂流:从单核到多核质变(一) - 教程
  • 251029C. 山月记
  • 2025年深度解析百川通阀门集团:从产能与智造维度透视行业样本
  • 2025年深度解析百川通阀门集团:消防阀门赛道的产能与认证全景
  • 2025 年电源模块厂家最新推荐榜单重磅发布,深度剖析优质厂家核心优势及选购要点隔离 / 开关 / 国产电源模块公司推荐