方法引用笔记
2026/8/7 10:50:23 网站建设 项目流程

Java 方法引用笔记

一、基础概念

  1. 定义
    把已经存在的方法拿过来复用,充当函数式接口中抽象方法的方法体,简化Lambda表达式。
  2. 核心符号
    ::叫做方法引用符
  3. 使用四大前提条件
  • 必须存在函数式接口(只有一个抽象方法)
  • 被引用的方法已经定义好、真实存在
  • 被引用方法的形参列表、返回值类型和接口抽象方法保持一致
  • 被引用方法的功能符合当前业务需求

作用:Lambda如果只是单纯调用已有方法,就可以简化写成方法引用。

二、方法引用5种格式分类

1. 引用静态方法

✅格式:类名::静态方法
示例:Integer::parseInt

2. 引用成员方法(对象调用)

✅格式:对象::成员方法
细分三种场景:

  • 其他类对象:对象名::方法名
  • 本类中:this::方法名(只能在成员方法内使用)
  • 父类中:super::方法名(只能在成员方法内使用)

3. 使用类名引用成员方法(特殊写法)

✅格式:类名::成员方法
示例:String::substring

⚠特殊规则:函数式接口第一个参数,会作为调用这个成员方法的对象。

4. 引用构造方法

✅格式:类名::new
示例:Student::new
用于快速创建对象,匹配类的构造器。

5. 引用数组构造方法

✅格式:数据类型[]::new
示例:int[]::new
用来创建指定长度的数组。

三、快速区分口诀

  1. 静态方法 → 类名调用方法 →类名::静态方法
  2. 已有对象实例调用普通方法 →对象::成员方法
  3. 需要创建对象 →类名::new
  4. 需要创建数组 →类型[]::new
  5. 抽象方法第一个参数作为方法调用者 →类名::成员方法

四、简单代码对比理解

Lambda写法:

Function<String,Integer>fun=s->Integer.parseInt(s);

方法引用简化写法:

Function<String,Integer>fun=Integer::parseInt;

五、易错点提醒

  1. 方法引用不能传递参数,只写方法名,不要写括号;
    ❌错误:Integer::parseInt()
    ✅正确:Integer::parseInt
  2. this::super::不能在静态方法中使用;
  3. 类名引用成员方法属于特殊语法,和普通对象引用成员方法区分开,考试高频考点。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询