Java四大函数式接口核心是行为特征:Consumer(有参无返,消费动作)、Supplier(无参有返,供给结果)、Function(有参有返,类型转换)、Predicate(有参布尔返,条件判断)。

记住Java四大核心函数式接口,关键不是死背名字和方法,而是抓住每个接口的“行为特征”和“生活类比”。它们在 java.util.function 包里,命名直白、职责清晰,记准“谁干啥、有无参数、有无返回”这三点,基本就不会混淆。
Consumer:只管“用”,不管“回”
它代表“消费”一个东西——接收参数,但不返回任何结果。就像把钱交给收银员,钱出去了,没拿回来东西(只执行动作)。
- 抽象方法是 void accept(T t)
- 典型用途:打印日志、修改对象状态、发送通知
- 例子:
Consumer—— 接收字符串,直接输出,不返回printer = System.out::println;
Supplier:只管“给”,不问“源”
它代表“供给”一个东西——不收任何输入,但一定给出一个结果。就像自动售货机按一下就吐出一瓶水,你不用告诉它要什么。
- 抽象方法是 T get()
- 典型用途:创建对象、生成随机数、获取当前时间
- 例子:
Supplier—— 没参数,每次调用都返回新日期now = LocalDate::now;
Function:负责“转换”,一进一出
它像一个加工流水线——输入一种类型,输出另一种类型。核心是“变”,而且必须有结果。
- 抽象方法是 R apply(T t)
- 典型用途:Stream 的
map、字符串转大写、对象属性提取(如Person::getName) - 例子:
Function—— 输入字符串,输出整数长度len = String::length;
Predicate:专门“判断”,只答“是或否”
它干的是“打勾/打叉”的活——接收一个值,只回答 true 或 false。所有条件过滤场景都靠它。
- 抽象方法是 boolean test(T t)
- 典型用途:Stream 的
filter、校验合法性、筛选集合 - 例子:
Predicate—— 输入字符串,返回是否超长isLong = s -> s.length() > 5;
小技巧:把四个首字母 C-S-F-P 念成 “吃-送-翻-判”,配合动作记忆(吃掉一个、送出一个、翻成另一个、判断对错),几遍就熟了。真正用起来时,看方法签名比记名字更快——有参无返是 Consumer,无参有返是 Supplier,有参有返是 Function,有参布尔返是 Predicate。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











