Java Lambda方法引用的三类傻瓜式对比

发布时间:2026/6/7 20:04:11

Java Lambda方法引用的三类傻瓜式对比 用「大白话表格场景案例」的形式整理 三类方法引用「傻瓜式」对比表类型语法格式核心逻辑大白话匹配要求典型场景入门级代码示例静态方法引用类名::静态方法直接用类的工具方法不用创建对象接口方法参数/返回值 ↔ 静态方法完全一致数据转换、工具计算Integer::parseInt字符串转数字实例方法引用对象::实例方法用某个具体对象的方法依赖对象状态接口方法参数/返回值 ↔ 实例方法完全一致对象属性操作、特定对象行为hello::toUpperCase字符串转大写类名实例方法引用类名::实例方法把对象当参数传间接调用实例方法接口方法第一个参数是类实例后续参数 ↔ 实例方法一致集合批量操作、通用对象处理String::toUpperCase批量转大写构造方法引用类名::new简化new对象相当于对象工厂接口方法参数 ↔ 构造方法参数一致返回值是类实例创建对象、集合初始化ArrayList::new创建空集合 四类写法「等价转换」案例以「字符串转大写」为例看不同写法的对应关系// 1. 原始Lambda写法 FunctionString, String lambda s - s.toUpperCase(); // 2. 实例方法引用具体对象 String str test; FunctionString, String instanceRef str::toUpperCase; // 注意这里实际是SupplierString更准确仅作对比 // 3. 类名实例方法引用最常用 FunctionString, String classRef String::toUpperCase; // 4. 静态方法引用需要自定义静态方法 class StringUtils { public static String toUpperCase(String s) { return s.toUpperCase(); } } FunctionString, String staticRef StringUtils::toUpperCase; 入门必懂「踩坑指南」匹配错误最常见比如接口方法有2个参数却引用了只有1个参数的方法编译器会直接报错实例方法别搞混对象::方法是用已有对象的方法类名::方法是把对象当参数传进去调用构造方法看参数ArrayList::new可以匹配无参构造也可以匹配int initialCapacity的有参构造看接口方法的参数null值要警惕实例方法引用时如果对象是null运行时会抛NullPointerException 实战练习场景集合排序用Comparator.comparing(String::length)替代Lambda实现按字符串长度排序对象创建用Person::new结合Stream批量创建对象列表数据处理用Arrays::sort对数组进行排序用Collections::reverse反转集合

相关新闻