JavaFunctionInterface基础教程
发布时间:2023-09-21 09:35:12
Java 8引入了函数式编程的概念,其中一个重要的特性是函数式接口(Functional Interface)。函数式接口是一个只有一个抽象方法的接口,可以使用Lambda表达式来实现该方法。本文将介绍Java函数式接口的基础知识和用法。
首先,函数式接口的定义非常简单,只需要在接口上添加一个@FunctionalInterface注解即可。这个注解是可选的,但是推荐使用,因为它能够确保这个接口只有一个抽象方法。
下面是一个函数式接口的示例代码:
@FunctionalInterface
public interface MyFunctionalInterface {
void doSomething();
}
接口中只有一个doSomething方法,并且没有默认方法或静态方法,这是一个典型的函数式接口。现在我们可以使用Lambda表达式来实现这个接口:
MyFunctionalInterface myLambda = () -> System.out.println("Hello World!");
myLambda.doSomething(); // 输出 Hello World!
Lambda表达式用->分割参数和函数体。在这个例子中,我们省略了函数的参数,只有一个函数体,即打印"Hello World!"。
Java也提供了一些内置的函数式接口,供我们使用。下面介绍其中的三个最常用的接口。
1. Supplier接口:该接口不接受任何参数,仅返回一个值。示例代码如下:
Supplier<String> supplier = () -> "Hello World!"; String result = supplier.get(); // 获取供应商提供的值 System.out.println(result); // 输出 Hello World!
2. Consumer接口:该接口接受一个参数,不返回任何结果。示例代码如下:
Consumer<String> consumer = (s) -> System.out.println("Hello " + s + "!");
consumer.accept("World"); // 接受供应商提供的值,并执行函数体
3. Function接口:该接口接受一个参数,并返回一个结果。示例代码如下:
Function<Integer, String> function = (i) -> "The number is: " + i; String result = function.apply(42); // 输入参数,并执行函数体,返回结果 System.out.println(result); // 输出 The number is: 42
除了上述提到的接口,Java 8还提供了一些其他的函数式接口,如Predicate、UnaryOperator、BinaryOperator等,它们分别具有不同的功能和特点。
总结一下,函数式接口是Java 8引入的一个重要特性,可以使用Lambda表达式来实现接口中的抽象方法。Java还提供了一些内置的函数式接口,供我们使用。函数式接口使得Java具备了函数式编程的能力,为我们编写简洁、灵活的代码提供了更多的选择。
