Java函数式接口是仅含一个抽象方法的接口,用于支持Lambda表达式和方法引用;JDK 8起在java.util.function包中提供Function、Consumer、Supplier、Predicate等核心接口及其基本类型特化版、Bi-前缀双参数版、UnaryOperator、BinaryOperator等。
Java 的函数式接口(Functional Interface)是指**只包含一个抽象方法**的接口,主要用于支持 Lambda 表达式和方法引用。JDK 8 起在 java.util.function 包中提供了大量内置的函数式接口,覆盖常见场景。以下是核心且最常用的几类:
用于接收参数并返回结果,是最常用的一类:
t -> t.toString())System.out::println)() -> new ArrayList())s -> s.length() > 0)为 int、long、double 等基本类型提供专用接口,提升性能,避免自动装箱开销:
用于需要两个输入参数的场景:
(s, len) -> s.substring(0, len))(k, v) -> map.put(k, v))(x, y) -> x.equals(y))补充一些特定用途的接口:
Function,输入输出同类型(如 s -> s.trim())BiFunction,两个同类型输入,返回同类型(如 Integer::sum)function 包中),但因历史原因被广泛用于 Lambda(如 () -> System.out.println("ok"))基本上就这些。实际开发中,Function、Consumer、Predicate、Supplier 及其基本类型变体用得最多,其余按需选用即可。