前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java8的Predicate,让代码更简洁

Java8的Predicate,让代码更简洁

作者头像
ImportSource
发布2019-05-06 15:59:27
5.8K0
发布2019-05-06 15:59:27
举报
文章被收录于专栏:ImportSourceImportSource

在我们的代码中,经常会编写是否为真的代码,比如用户名是否存在,客户是否存在等。类似如下代码:

public boolean exist(Long userId){

...

return false;

}

这样做已经很棒了。但你需要了解一个java8的Predicate。通过Predicate可以让你的代码更加的简洁。学习下Predicate吧。

Predicate是一个函数接口。它包含了一个接口方法和三个默认方法以及一个静态方法。

Predicate表示断定和假设的意思。

test

test接口就是为了让你实现判断的效果。最原始的就是去实现这个接口,然后写我们的判断逻辑,如下:

你也看到有一部分灰色的代码,告诉我们这个可以被优化为lambda表达式,如下:

你也可以把Predicate的实现单独抽离成一个实现类,方便重用。

Predicate不仅可以单独在代码中使用,也可以在测试代码中用来做判断,同时还可以被用在Stream的filter中,用来做过滤。

使用Predicate可以让你的判断逻辑代码更加的简洁和解耦,增加了可读性、可测试性,同时符合DRY原则

DRY原则:(don’t repeat yourself): writing code more than once is not a good fit for a lazy developer ;)It also makes your software more difficult to maintain because it becomes harder to make your business logic consistent。一句话:别写重复代码

现在你的代码看起来已经很炫酷了。但别急,接下来的几个操作会让你的代码看起来更加的清晰而明了。当你写了一个“大于20”的条件时,此时需求变了,需要一个新的条件20<x<30。

此时你有两条路,一条路是直接修改Predicate的test方法中的逻辑。还有一条路是新建一个新的Predicate,然后和现有的组装成为一个新的Predicate。第一条路相信你经常走,接下来就来介绍下第二条路:组装。

and

首先新建一个LessThan30Predicate:

然后和上面的CustomPredicate用and方法组装成一个新的Predicate。如下:

输出结果:

or

同样也可以使用or来组装。

输出结果:

negate

你也可以使用negate方法把现有的Predicate变为否定的Predicate。

输出结果:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ImportSource 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档