Java函数式编程:Lambda的“插座“与“插头“(2)

Java函数式接口:Lambda的"插座"与"插头"



一、你家插座为什么不能插USB?——类型匹配的重要性

装修过房子的人都知道,空调要用16A插座,手机充电用USB插座,不同的插头必须找到对应的插孔。Java中的函数式接口就像这些标准化的插座,而Lambda表达式就是形状各异的插头

想象你买了个新电器(写了个Lambda表达式),如果它用的是Type-C插头(特定参数和返回值),但家里只有普通插座(普通接口),这时候就需要一个转换接头(匿名内部类)。而函数式接口就是预先装好的Type-C插座,让Lambda即插即用。

这就是为什么Java规定:只有包含且仅包含一个抽象方法的接口(函数式接口),才能用Lambda表达式。就像国家电网制定插座标准,保证不同厂家的电器(Lambda)都能安全接入。


二、四大金刚:Java内置的常用函数式接口

2.1 Predicate:像安检机一样过滤数据

// 比喻:超市的安检门,检查顾客(数据)是否符合条件
Predicate<String> 是否长密码 = password -> password.length() >= 8;

System.out.println(是否长密码.test("123456"));    // 输出 false(太短)
System.out.println(是否长密码.test("hello123"));  // 输出 true(合格)

// 组合使用:检测同时包含数字和字母
Predicate<String> 包含数字 = s -> s.matches(".*\\d.*");
Predicate<String> 包含字母 = s -> s.matches(".*[a-zA-Z].*");

Predicate<String> 有效密码 = 是否长密码.and(包含数字).and(包含字母);
System.out.println(有效密码.test("abcd1234")); // true(三项全过)

2.2 Function:像加工流水线转换数据

// 比喻:奶茶店的加工流水线
Function<String, String> 加冰 = 原味奶茶 -> 原味奶茶 + "加冰";
Function<String, String> 加珍珠 = 奶茶 -> 奶茶 + "加珍珠";
Function<String, String> 加奶盖 = 奶茶 -> 奶茶 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

双囍菜菜

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值