博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Predicate和Consumer应用
阅读量:6955 次
发布时间:2019-06-27

本文共 1708 字,大约阅读时间需要 5 分钟。

Predicate

判定一个输入对象是否符合某个条件

看下函数源码

@FunctionalInterfacepublic interface Predicate
{ boolean test(T t); default Predicate
and(Predicate
other) { Objects.requireNonNull(other); return (t) -> test(t) && other.test(t); } default Predicate
negate() { return (t) -> !test(t); } default Predicate
or(Predicate
other) { Objects.requireNonNull(other); return (t) -> test(t) || other.test(t); } static
Predicate
isEqual(Object targetRef) { return (null == targetRef) ? Objects::isNull : object -> targetRef.equals(object); }}复制代码

demo

判定一个商品的商品类型是否为2015 public static final Predicate
ITEM_TYPE_20_15 = item -> item.getType() == ItemClass.MEDICINE.getValue() && item.getSubType() == ItemSubTypeEnum.NO_RECIPE.getValue();复制代码

使用的时候可以将逻辑条件收敛,所有需要判定商品类型的都可以ITEM_TYPE_20_15.test(item)一个商品对象。and可以联合多个判定条件,negate取否值,or取或条件判定

Consumer

即接口表示一个接受单个输入参数并且没有返回值的操作。不像其它函数式接口,Consumer接口期望执行带有副作用的操作(Consumer的操作可能会更改输入参数的内部状态

@FunctionalInterfacepublic interface Consumer
{ void accept(T t); default Consumer
andThen(Consumer
after) { Objects.requireNonNull(after); return (T t) -> { accept(t); after.accept(t); }; }}复制代码

demo

Consumer
recordUserName = record->recode.setUserName("zhangsan");Consumer
recordUserId = record->recode.setUserId("10000");复制代码

收敛所有的用户记录逻辑

recordUserName.acept(record);recordUserName.andThen(recordUserId ).acept(record);复制代码

转载于:https://juejin.im/post/5bea8048e51d456f60012661

你可能感兴趣的文章
FragmentTransaction add 和 replace 完全解析
查看>>
DotImage使用教程:从数据库中读写图像
查看>>
锐捷CCNA系列(五) 交换机配置模式切换
查看>>
ffmpeg的使用
查看>>
【最小割】【Dinic】bzoj3275 Number
查看>>
PHP RSA加解密示例(转)
查看>>
Django权限1
查看>>
Python调用 c++ dll,并且使用Py2exe打包
查看>>
安卓布局随记
查看>>
使用gearman进行异步的邮件或短信发送
查看>>
XGBoost:在Python中使用XGBoost
查看>>
python基础知识~ 序列化
查看>>
Activity的启动模式(android:launchMode)
查看>>
java设计模式演示样例
查看>>
创建与删除索引
查看>>
HTML5新增核心工具——canvas
查看>>
改动file header (測)
查看>>
微软职位内部推荐-Senior Speech TTS
查看>>
UVA - 10574 Counting Rectangles
查看>>
HDU3336-Count the string(KMP)
查看>>