欢迎访问宙启技术站
智能推送

Java中如何实现函数式接口

发布时间:2023-06-24 13:58:59

Java中实现函数式接口需要满足两个条件:接口只有一个抽象方法,并且使用@FunctionalInterface注解来标识这个接口是函数式接口。

函数式接口是指:只包含一个抽象方法的单方法接口。函数式接口可以用 Lambda 表达式以及方法引用来表示该接口的一个实现,可以用作方法参数。

1. 定义函数式接口

定义函数式接口的语法很简单。只需定义一个接口,其中只包含一个抽象方法,然后使用@FunctionalInterface注解将其标注为函数式接口。

例如:

@FunctionalInterface
public interface MyFunctionalInterface {
    public abstract void doSomething();
}

上面的代码定义了MyFunctionalInterface,它是一个函数式接口,只有一个抽象方法doSomething()。

2. 实现函数式接口

实现函数式接口可以使用Lambda表达式或方法引用来实现。

使用Lambda表达式:

MyFunctionalInterface myFunc = () -> {
  System.out.println("Hello World!");
};
myFunc.doSomething();

使用方法引用:

public static void doSomething() {
    System.out.println("Hello World!");
}

MyFunctionalInterface myFunc = MyClass::doSomething;
myFunc.doSomething();

3. 内置函数式接口

Java 8中常见的内置函数式接口有以下几种:

- Consumer:代表了接受单个输入参数并且不返回结果的操作。

- Supplier:代表了一个输出。

- Function:代表了接受一个参数并且返回一个结果的操作。

- Predicate:代表了一个谓词(布尔值函数)。

下面是一个示例:

// Consumer
Consumer<String> consumer = (input) -> System.out.println(input);
consumer.accept("Hello World");

// Supplier
Supplier<String> supplier = () -> "Hello World";
System.out.println(supplier.get());

// Function
Function<Integer, Integer> function = (input) -> input * input;
System.out.println(function.apply(5));

// Predicate
Predicate<Integer> predicate = (input) -> input == 5;
System.out.println(predicate.test(5));

4. 总结

Java中函数式接口的实现非常简单。只需要定义一个只包含一个抽象方法的接口,并使用@FunctionalInterface注解将其标识为函数式接口。然后可以使用Lambda表达式或方法引用来实现这个接口。另外,Java 8中提供了很多常用的内置函数式接口,可以用来简化编程。