定义:函数式接口是只有一个抽象方法的接口。
Supplier 接口
介绍:不带任何输入参数,但是返回一个值的函数。该接口包含一个 get() 方法,用于返回一个 T 类型的值。
举例:在以下代码中,randomSupplier 就是一个 Supplier 接口的实例,它用于返回一个随机生成的整数:
import java.util.Random; import java.util.function.Supplier; public class SupplierDemo { public static void main(String[] args) { Supplier<Integer> randomSupplier = () -> new Random().nextInt(); System.out.println(randomSupplier.get()); } }
Consumer 接口
介绍:带有一个输入参数但是没有输出的函数。该接口包含一个 accept(T t) 方法,用于处理一个 T 类型的参数。
举例:在以下代码中,printConsumer 就是一个 Consumer 接口的实例,它用于打印传入的字符串:
import java.util.function.Consumer; public class ConsumerDemo { public static void main(String[] args) { Consumer<String> printConsumer = str -> System.out.println(str); printConsumer.accept("Hello, world!"); } }
Function<T, R> 接口
介绍:带有一个输入参数并且返回一个结果的函数。该接口包含一个 apply(T t) 方法,用于将输入的 T 类型的参数转换成 R 类型的结果。
举例:在以下代码中,lengthFunction 就是一个 Function<String, Integer> 接口的实例,它用于返回输入字符串的长度:
import java.util.function.Function; public class FunctionDemo { public static void main(String[] args) { Function<String, Integer> lengthFunction = str -> str.length(); System.out.println(lengthFunction.apply("Hello, world!")); } }
Predicate 接口
介绍:带有一个输入参数并且返回一个布尔结果的函数。该接口包含一个 test(T t) 方法,用于对输入的 T 类型的参数进行判断。
举例:在以下代码中,evenPredicate 就是一个 Predicate 接口的实例,它用于判断输入的整数是否为偶数:
import java.util.function.Predicate; public class PredicateDemo { public static void main(String[] args) { Predicate<Integer> evenPredicate = num -> num % 2 == 0; System.out.println(evenPredicate.test(10)); System.out.println(evenPredicate.test(5)); }