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

函数式接口:了解Java 8中新增的函数式接口的使用方法

发布时间:2023-05-28 21:40:22

Java 8引入的最重要的特性之一是函数式接口。函数式接口是指只包含一个抽象方法的接口。这种接口广泛应用于Java 8中的Lambda表达式和方法引用。本文将探讨Java 8中新增的函数式接口及其使用方法。

Java 8新增的函数式接口

在Java 8中,新增了多个函数式接口,其中包括:

1. Consumer<T>:接受一个T类型的参数,返回一个void。

2. Function<T, R>:接受一个T类型的参数,返回一个R类型的结果。

3. Supplier<T>:不接受任何参数,返回一个T类型的结果。

4. Predicate<T>:接受一个T类型的参数,返回一个boolean类型的结果。

5. UnaryOperator<T>:接受一个T类型的参数,返回一个T类型的结果。

6. BiFunction<T, U, R>:接受两个参数,一个T类型的参数和一个U类型的参数,返回一个R类型的结果。

7. BinaryOperator<T>:接受两个T类型的参数,返回一个T类型的结果。

使用方法

下面是如何使用Java 8中新增的函数式接口的示例。

Consumer<T>

Consumer<T>接口表示接受一个T类型的参数,并执行某些操作。下面是一个使用Consumer接口的示例:

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

运行以上代码将输出“Hello World!”。

Function<T, R>

Function<T, R>接口表示接受一个T类型的参数,并返回一个R类型的结果。下面是一个使用Function接口的示例:

Function<Integer, String> function = (num) -> {
    if(num % 2 == 0) {
        return "偶数";
    } else {
        return "奇数";
    }
};
String result = function.apply(3);
System.out.println(result);

运行以上代码将输出“奇数”。

Supplier<T>

Supplier<T>接口表示不接受任何参数,并返回一个T类型的结果。下面是一个使用Supplier接口的示例:

Supplier<Double> supplier = () -> Math.random();
double result = supplier.get();
System.out.println(result);

运行以上代码将输出一个随机数。

Predicate<T>

Predicate<T>接口表示接受一个T类型的参数,并返回一个布尔值。下面是一个使用Predicate接口的示例:

Predicate<Integer> predicate = (num) -> num > 0;
boolean result = predicate.test(-1);
System.out.println(result);

运行以上代码将输出“false”。

UnaryOperator<T>

UnaryOperator<T>接口表示接受一个T类型的参数,并返回一个T类型的结果。下面是一个使用UnaryOperator接口的示例:

UnaryOperator<Integer> operator = (num) -> num * num;
int result = operator.apply(3);
System.out.println(result);

运行以上代码将输出“9”。

BiFunction<T, U, R>

BiFunction<T, U, R>接口表示接受两个参数并返回一个R类型的结果。下面是一个使用BiFunction接口的示例:

BiFunction<Integer, Integer, Integer> biFunction = (num1, num2) -> num1 + num2;
int result = biFunction.apply(3, 5);
System.out.println(result);

运行以上代码将输出“8”。

BinaryOperator<T>

BinaryOperator<T>接口表示接受两个T类型的参数,并返回一个T类型的结果。下面是一个使用BinaryOperator接口的示例:

BinaryOperator<Integer> operator = (num1, num2) -> num1 + num2;
int result = operator.apply(3, 5);
System.out.println(result);

运行以上代码将输出“8”。

总结

在Java 8中引入的函数式接口使得Java程序员可以更方便地处理数据和实现函数式编程。本文介绍了Java 8中新增的大部分函数式接口及其使用方法,但其实Java 8还有很多其他函数式接口。熟练掌握Java 8的函数式接口将使程序员更加高效地编写Java程序。