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

Mohammad Irfan 2023年1月30日 2021年6月30日
  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