在 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