如何将函数用作 Java 中的回调?
在 java 中,可以使用函数式接口将函数用作回调。具体步骤包括:创建函数式接口:它是一个只包含单个抽象方法的接口。将函数式接口用作方法的参数:方法接受函数式接口实例并使用它来处理数据。创建函数式接口实例:可以通过匿名类或 lambda 表达式来创建。传递回调:将创建的函数式接口实例作为参数传递给接受回调的方法。
如何在 Java 中将函数用作回调?
回调是一种设计模式,允许函数将控制权返回给调用方,并在特定的事件发生时收到通知。在 Java 中,可以用作回调的函数称为函数式接口,它是一个只包含单个抽象方法的接口。
创建函数式接口
首先,需要创建一个函数式接口来表示回调。例如,以下接口表示一个接受 String 对象并返回 boolean 值的回调:
@FunctionalInterface public interface StringPredicate { boolean test(String str); }
将函数式接口用作参数
一旦创建了函数式接口,就可以将其用作方法的参数。例如,以下方法接受 StringPredicate 实例作为参数,并使用它来筛选一个字符串列表:
public static List<String> filterStrings(List<String> strings, StringPredicate predicate) { List<String> filteredStrings = new ArrayList<>(); for (String str : strings) { if (predicate.test(str)) { filteredStrings.add(str); } } return filteredStrings; }
创建函数式接口实例
要使用函数式接口作为回调,需要创建一个它的实例。对于匿名类,可以使用如下语法:
StringPredicate predicate = new StringPredicate() { @Override public boolean test(String str) { return str.startsWith("J"); } };
对于 lambda 表达式,语法如下:
StringPredicate predicate = (str) -> str.startsWith("J");
传递回调
创建函数式接口实例后,就可以将它作为参数传递给接受回调的方法:
List<String> jStrings = filterStrings(strings, predicate);
实战案例
以下是一个实战案例,演示如何将函数用作 Java 中的回调:
import java.util.ArrayList; import java.util.List; public class CallbackExample { public static void main(String[] args) { // 创建一个字符串列表 List<String> strings = new ArrayList<>(); strings.add("Java"); strings.add("Python"); strings.add("C++"); // 创建一个函数式接口实例(lambda表达式) StringPredicate predicate = (str) -> str.startsWith("J"); // 使用回调筛选列表 List<String> filteredStrings = filterStrings(strings, predicate); // 打印结果 for (String str : filteredStrings) { System.out.println(str); } } public static List<String> filterStrings(List<String> strings, StringPredicate predicate) { List<String> filteredStrings = new ArrayList<>(); for (String str : strings) { if (predicate.test(str)) { filteredStrings.add(str); } } return filteredStrings; } }
结果:
Java
以上就是如何将函数用作 Java 中的回调?的详细内容,更多请关注其它相关文章!