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

Lambda表达式解读

本文通过具体案例演示函数式接口Function<T,R>的三种实现方式演变过程。


一、传统匿名内部类实现

Integer resInt1 = t1(new Function<String, Integer>() {@Overridepublic Integer apply(String s) {int i = Integer.parseInt(s);return i;}
});

实现特点

  1. 显式创建Function接口的匿名实现类
  2. 完整声明apply方法的参数类型String
  3. 使用显式return语句返回结果
  4. 包含完整的花括号和方法体结构

二、基础Lambda实现

Integer resInt2 = t1((String t) -> {int i = Integer.parseInt(t);return i;
});

优化点

  1. 使用Lambda表达式替代匿名类
  2. 保持显式参数类型声明
  3. 保留完整方法体结构
  4. 语法更紧凑但保留核心逻辑

三、精简Lambda表达式

Integer resInt3 = t1(t -> Integer.parseInt(t));

优化路径

  1. 参数类型推断

    • 编译器通过方法签名Function<String, Integer>自动推断t的类型
    • 简写为t ->代替(String t) ->
  2. 单表达式优化

    • 当方法体仅包含单个表达式时:
    • 省略return关键字
    • 移除花括号
    • 直接写表达式作为返回值
  3. 方法引用替代(进一步优化)

    Integer resInt4 = t1(Integer::parseInt);
    

    • 使用类方法引用语法
    • 完全消除参数列表
    • 直接绑定静态方法

核心方法解析

public static Integer t1(Function<String, Integer> fn) {return fn.apply("1"); 
}

执行流程

  1. 接收Function<String, Integer>类型参数
  2. 调用apply方法传入固定参数"1"
  3. 返回转换后的Integer结果

相关文章:

  • C++进阶--AVL树的实现续
  • MCP:让AI模型更可信的秘密武器
  • VRRP协议-IP地址冗余配置
  • Telnetlib三种异常处理方案
  • 微服务的“迷宫” - 我们为何需要服务网格?
  • 深入详解人工智能数学基础——微积分中的自动微分及其在PyTorch中的实现原理
  • 类加载机制详解:双亲委派模型与打破它的方式
  • MindSpore框架学习项目-ResNet药物分类-模型训练
  • 人脸真假检测:SVM 与 ResNet18 的实战对比
  • Yocto中的${D}解读
  • Android 13 默认打开 使用屏幕键盘
  • 使用FastAPI和Apache Flink构建跨环境数据管道
  • vue3项目中使用CodeMirror更复杂的用法,实现自定义语法模式,手动在指定光标位置插入/获取/替换/绑定文本
  • 达索MODSIM实施成本高吗?哪家服务商靠谱?
  • C++修炼:stack和queue
  • python校园新闻发布管理系统
  • 【Web】使用Vue3开发鸿蒙的HelloWorld!
  • uniapp-商城-51-后台 商家信息(logo处理)
  • Win 10 close AutoUpdate DataCollection
  • bash shell中readarray和mapfile的用法
  • 咸宁市委常委、市纪委书记官书云调任湖北省司法厅副厅长
  • 印度一战机在巴基斯坦旁遮普省被击落,飞行员被俘
  • 欧洲理事会前主席米歇尔受聘中欧国际工商学院特聘教授,上海市市长龚正会见
  • 观察|印巴交火开始升级,是否会演变为第四次印巴战争?
  • 观察|22项达全球最优,世行为上海营商环境“盖章”
  • 人们为何热衷谈论八卦?