Java函数式接口:如何定义函数式接口并传递函数作为参数?
Java函数式接口是一种只包含一个抽象方法的接口。这种接口可以用作Lambda表达式的类型,从而使我们能够将函数作为参数传递给其他方法。
定义函数式接口
要定义一个函数式接口,我们需要在接口上添加@FunctionalInterface注释。这告诉编译器这是一个函数式接口,限制这个接口只有一个抽象方法。
例如,我们定义了一个名为MyFunction的函数式接口,其抽象方法接受两个int参数并返回一个int值:
@FunctionalInterface
public interface MyFunction {
int operation(int a, int b);
}
传递函数作为参数
在Java中,我们可以使用Lambda表达式将函数作为参数传递给其他方法。通过传递一个函数作为参数,我们能够灵活地扩展一个方法的功能。
例如,我们编写了一个名为execute的方法,它接受一个函数式接口作为参数,并对传入的参数执行操作:
public static void execute(MyFunction function, int a, int b) {
int result = function.operation(a, b);
System.out.println("Result: " + result);
}
现在我们可以传递一个Lambda表达式作为函数的实现。例如,我们可以传递一个实现了MyFunction接口的Lambda表达式,它返回两个int数的和:
execute((a, b) -> a + b, 10, 20);
在这个例子中,Lambda表达式的实现是一个简单的加法运算。我们传递了两个int参数,a和b,并返回它们的和。当我们调用execute方法时,它将调用Lambda表达式,将10和20作为参数传递,并输出结果30。
Java函数式接口是处理函数的一种非常强大的方式。通过将函数作为参数传递给其他方法,我们能够灵活地扩展方法的功能,使代码更加模块化和易于维护。
