当前位置: 首页 > 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.jsqmd.com/news/31104/

相关文章:

  • 国债ETF收益规律发现及应用
  • 2025年11月宝宝起名公司选择榜:舜缘居等五强对比解析
  • 2025广东高端网站建设公司精选榜单:知名网站建设公司聚焦专业与适配的实用之选
  • 2025年11月自吸泵厂家评价榜:主流厂商数据解析与推荐
  • 2025年11月治疗失眠的专家推荐:市场报告与选择指南
  • 2025年11月自吸泵厂家推荐列表:主流企业口碑与资质全解析
  • 2025年11月治疗失眠的专家推荐:市场报告与榜单全解析
  • 2025年11月中国婚姻家事与财富管理律师评价榜:五强深度评测
  • 2025不锈钢提升机厂家选购参考:专注实用的优质厂家与选择逻辑
  • 2025制造业刮板输送机厂家选型参考:皮带输送机厂家供应商及选购要点解析
  • 2025年11月中国婚姻家事与财富管理律师排名榜:五强对比指南
  • Let`s Encrypt 生成免费自动续签 HTTPS 证书
  • ModbusRTU通信报文分析—功能码02读取输入线圈笔记
  • 2025 年实验室 CMA/CNAS 认证咨询公司全新推荐
  • 2025年11月沈阳酒店深度评测排名:从用户需求角度解析优质选择
  • 2025 年 11 月 T2紫铜棒厂家推荐排行榜,国标T2紫铜棒,高精度紫铜棒,耐磨紫铜棒,定制紫铜棒公司推荐
  • 2025 年 11 月 6082 铝板厂家推荐排行榜,6061铝板,7075铝板,5083铝板,2024铝板,优质铝合金板材供应商精选
  • 2025 年 11 月 7050 铝板厂家推荐排行榜,7050 铝板,7050 铝板厂家,7050 铝板批发,7050 铝板公司推荐,专业实力与客户满意度深度解析
  • 2025 年 11 月 T2紫铜排厂家推荐排行榜,优质T2紫铜排,高精度紫铜排,导电紫铜排,耐磨紫铜排公司推荐
  • P12.常见的transforms(二)
  • AT_abc200_d [ABC200D] Happy Birthday! 2 题解报告
  • 使用git clone配合git sparse-checkout拉取大型仓库
  • AT_indeednow_2015_qualb_4 高橋くんと数列 题解报告
  • TOON 协议与 AIDotNet.Toon 实践指南
  • 杂题选做-4
  • 2025 年 11 月江阴商标注册服务商权威推荐榜:专业代理机构实力解析与高效申请指南
  • 2025 年 11 月江阴商标注册服务商权威推荐榜:专业代理机构与高效申请流程口碑之选
  • 详细介绍:安全框架 SpringSecurity 入门(超详细,IDEA2024)
  • 洛谷 P1780 染色的立方体 题解报告
  • P11.常见的transforms(一)