在 Java 中将方法作为参数传递

Mohammad Irfan 2023年10月12日
  1. 在 Java 中使用 lambda 函数将方法作为参数传递
  2. 将方法作为参数传递给 Java 中的自定义方法
  3. 使用 Java 中的方法引用将方法作为参数传递
在 Java 中将方法作为参数传递

本教程介绍在 Java 中将方法作为参数传递。为了帮助你进一步理解此主题,我们提供了示例代码。

从头开始,Java 中没有将方法作为参数传递的概念。但是,我们可以通过使用 Java 8 中的 lambda 函数和方法引用来实现这一点。因此,在本文中,我们将更多地关注这两个主题,将方法作为参数传递。

lambda 函数或 lambda 表达式是 Java 8 中引入的一个概念。它是一种遵循函数风格方法编写函数的简洁方法。由于 Java 和 Java 8 被认为是面向对象的语言,因此它们支持编写代码的函数式方法。

在 Java 中使用 lambda 函数将方法作为参数传递

这是 lambda 的一个简单示例,我们使用它来迭代 ArrayList 元素。请注意,我们将 lambda 函数传递给 Iterable 接口的 forEach() 方法。ArrayList 类实现了 Iterable 接口。

所以这就是我们如何在 Java 中将方法(lambda 函数)作为参数传递:

public class SimpleTesting {
  public static void main(String[] args) {
    ArrayList<Integer> evens = new ArrayList<Integer>();
    evens.add(10);
    evens.add(20);
    evens.add(30);
    evens.add(40);
    evens.forEach((n) -> { System.out.println(n); }); // passing lambda as a parameter
  }
}

输出:

10
20
30
40

将方法作为参数传递给 Java 中的自定义方法

除了内置方法 forEach(),我们可以将它作为参数传递给自定义方法。在这个例子中,我们创建了一个接口 Doable,它有一个方法 doSomething()。在 SimpleTesting 类中,我们有一个调用 doSomething() 方法的方法 show()。在 main() 方法中,我们创建了一个 lambda 函数并将其传递给 show() 方法。

请注意,这是我们将方法(lambda 函数)作为参数传递给方法的行。

show("Hello", doa); // passing lambda function as parameter
interface Doable {
  String doSomething(String str);
}
public class SimpleTesting {
  public static void main(String[] args) {
    Doable doa = (str) -> str + " Rohan";
    show("Hello", doa); // passing lambda function as parameter
  }

  public static void show(String msg, Doable doa) {
    String greeting = doa.doSomething(msg);
    System.out.println(greeting);
  }
}

输出:

Hello Rohan

使用 Java 中的方法引用将方法作为参数传递

这是另一种可用于将方法作为参数传递给方法的解决方案。它还在 Java 8 版本中与 lambda 函数一起引入。在此示例中,我们使用方法引用概念将 show() 方法作为参数传递给 Thread() 构造函数,该构造函数在运行时执行。在此处查看代码示例的输出:

public class SimpleTesting{
    public static void main(String[] args) {
        // Passing method reference as a parameter
        Thread thread = new Thread(SimpleTesting::show);
        thread.start();
    }  
    public static void show() {
        System.out.println("My Thread");
    }
}

输出:

My Thread

相关文章 - Java Method