函数式接口
1.函数式接口
只能含有1个方法的接口,入参可以有多个,出参可有可无
定义接口
@FunctionalInterface
public interface ReceiverGetter {
List<Receiver> apply(ResGroup resGroup);
}
使用策略模式使用接口
Map<String,ReceiverGetter> map = Maps.newHashMap();
map.put("DBA",resgroup -> return Lists.newArrayList())
调用策略模式中定义的函数方法去执行
map.get("DBA").apply(resGroup)
2.Supplier接口
java.util.function.Supplier
定义一个Supplier接口的通过无参方法返回字符串helloworld
Supplier<String> supplier = new Supplier<String>(){
@Override
public String get(){
return "helloworld"
}
}
策略模式使用Supplier接口
Map<String,String> map = Maps.newHashMap();
map.put("DBA",() -> return "helloworld")
使用策略模式
String ss = map.get("DBA").get()
3.Consumer接口
Consumer接口正好相反,不是生产一个数据,而是消费一个数据
常用与传递参数进行处理.没有返回值
策略模式中,value值是Consumer接口,Consumer接口是处理ProcessContext<NotificationModel>>这种数据类型
Map<ResGroupType, Consumer<ProcessContext<NotificationModel>>> rewriteActions = new ImmutableMap.Builder<ResGroupType,Consumer<ProcessContext<NotificationModel>>>()
.put(ResGroupType.CONFIG_RES_GROUP,context -> rewriteConfigResGroupSetting(context))
.put(ResGroupType.VIRTUAL_RES_GROUP,context -> rewriteVirtualResGroupSetting(context))
.build();
处理
rewriteActions.get(resGroupType).accept(context);
4.Predicate接口
过滤接口,抽象方法test
5.Function接口
java.util.function.Function<T,R> 接口来根据一个类型的数据,得到另一个类型的数据
前置条件 -> 后置条件
6.内置函数式接口的子类
原创:做时间的朋友
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2021-01-05 列表分片及并行执行
2021-01-05 RestTemplate使用
2021-01-05 @Slf4j注解实现日志输出