java 函数式接口提供多种通用实现,包括:1. predicate 用于布尔求值;2. consumer 用于接受输入并执行副作用;3. function 用于将输入映射到输出;4. supplier 用于提供值;5. bipredicate 用于对两个输入值进行布尔求值。这些实现可以简化代码、提高可读性,并将其组织成可重用的块。

Java 函数式接口的常见实现
函数式接口是仅包含一个抽象方法的接口。Java 为函数式接口提供了多种通用实现,这些实现可用于简化代码并提高可读性。
1. Predicate
立即学习“Java免费学习笔记(深入)”;
Predicate 接口用于对输入值进行布尔求值。
import java.util.function.Predicate;
public class Example {
public static void main(String[] args) {
// 检查数字是否大于 10
Predicate isGreaterThan10 = n -> n > 10;
System.out.println(isGreaterThan10.test(12)); // true
}
} 2. Consumer
Consumer 接口用于接受输入并可能执行副作用(例如打印)。
import java.util.function.Consumer;
public class Example {
public static void main(String[] args) {
// 打印数字
Consumer printNumber = n -> System.out.println(n);
printNumber.accept(12); // 输出 12
}
} 3. Function
【极品模板】出品的一款功能强大、安全性高、调用简单、扩展灵活的响应式多语言企业网站管理系统。 产品主要功能如下: 01、支持多语言扩展(独立内容表,可一键复制中文版数据) 02、支持一键修改后台路径; 03、杜绝常见弱口令,内置多种参数过滤、有效防范常见XSS; 04、支持文件分片上传功能,实现大文件轻松上传; 05、支持一键获取微信公众号文章(保存文章的图片到本地服务器); 06、支持一键
Function 接口用于将一个输入映射到一个输出。
import java.util.function.Function;
public class Example {
public static void main(String[] args) {
// 将数字加 1
Function addOne = n -> n + 1;
System.out.println(addOne.apply(12)); // 13
}
} 4. Supplier
Supplier 接口用于提供一个值,该值不需要任何输入。
import java.util.function.Supplier;
public class Example {
public static void main(String[] args) {
// 提供当前时间
Supplier getCurrentTime = () -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
System.out.println(getCurrentTime.get()); // 输出当前时间
}
} 5. BiPredicate
BiPredicate 接口用于对两个输入值进行布尔求值。
import java.util.function.BiPredicate;
public class Example {
public static void main(String[] args) {
// 检查两个数字是否都大于 10
BiPredicate bothGreaterThan10 = (n, m) -> n > 10 && m > 10;
System.out.println(bothGreaterThan10.test(12, 15)); // true
}
} 实战案例
import java.util.List;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
// 获取大于 10 的数字列表
List numbers = List.of(5, 8, 12, 17, 20);
List filteredNumbers = numbers.stream()
.filter(n -> n > 10)
.collect(Collectors.toList());
System.out.println(filteredNumbers); // 输出 [12, 17, 20]
}
} 通过使用函数式接口,我们可以将代码逻辑组织成可重用的块,从而提高代码可读性并简化维护。









