Java 方法引用

2025 年 4 月 21 日 | 阅读 4 分钟

Java 8 引入了一项新特性,称为方法引用。方法引用用于引用函数式接口的方法。它是 Lambda 表达式的一种紧凑且简单形式。每当您使用 Lambda 表达式只是为了引用一个方法时,您都可以用方法引用替换您的 Lambda 表达式。在本教程中,我们将详细解释方法引用的概念。


方法引用类型

Java 中有以下几种方法引用类型:

  1. 引用静态方法。
  2. 引用实例方法。
  3. 引用构造函数。
Types of Java Method References

1) 引用静态方法

您可以引用类中定义的静态方法。以下是描述 Java 中引用静态方法过程的语法和示例。

语法

示例 1

在以下示例中,我们定义了一个函数式接口并将其引用到一个静态方法,例如它的函数式方法 say()。

示例

输出

Hello, this is static method.

示例 2

在以下示例中,我们使用预定义的函数式接口 Runnable 来引用静态方法。

示例

输出

Thread is running...

示例 3

您还可以使用预定义的函数式接口来引用方法。在以下示例中,我们使用 BiFunction 接口并使用它的 apply() 方法。

示例

编译并运行

输出

30

示例 4

您还可以通过引用方法来重载静态方法。在以下示例中,我们定义并重载了三个 add 方法。

示例

编译并运行

输出

30
30.0
30.0

2) 引用实例方法

与静态方法一样,您也可以引用实例方法。在以下示例中,我们描述了引用实例方法的过程。

语法

示例 1

在以下示例中,我们引用非静态方法。您可以通过类对象和匿名对象来引用方法。

示例

输出

Hello, this is non-static method.
Hello, this is non-static method.

示例 2

在以下示例中,我们引用实例(非静态)方法。Runnable 接口只包含一个抽象方法。因此,我们可以将其用作函数式接口。

示例

输出

Hello, this is instance method

示例 3

在以下示例中,我们使用 BiFunction 接口。它是一个预定义的接口,包含一个函数式方法 apply()。在这里,我们将 add 方法引用到 apply 方法。

示例

编译并运行

输出

30

3) 引用构造函数

您可以使用 new 关键字引用构造函数。在这里,我们借助函数式接口来引用构造函数。

语法

示例

示例

编译并运行

输出

Hello