函数式接口

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 仅包含一个无参的方法 T get(),用于获取一个泛型参数指定的数据

定义一个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.内置函数式接口的子类

image

posted @   SpecialSpeculator  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2021-01-05 列表分片及并行执行
2021-01-05 RestTemplate使用
2021-01-05 @Slf4j注解实现日志输出
点击右上角即可分享
微信分享提示