本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接
最近在搞Excel导入,数据校验是少不了的,但是不同的数据字段有不同的校验策略,五花八门的,甚至不确定,所以就搞一个校验策略工具,把校验策略抽象出来。这里尝试了Java 8 提供的一个断言函数接口
java.util.function.Predicate<T>
,非常给力!把校验策略优雅地封装了起来,今天就简单分享一下对这个函数式接口的使用心得。
当然后面我又想了个办法把 JSR303 校验用到 导入校验 中了,这种方法就被我淘汰了,这都是后话了。
Predicate的应用
先来看看效果:
boolean validated = new Validator<String>()
.with(s -> s.length() > 5)
.with(s -> s.startsWith("felord"))
.with(s -> s.endsWith("cn"))
.with(s -> s.contains("."))
.validate("felord.cn");
复制代码
我拿校验字符串为例子,通过一系列的
Predicate<String>
断言来对字符串
felord.cn
进行校验。这里不局限于
String
提供的方法,只要你满足
String -> boolean
,也就是一个字符串入参能得到一个布尔返回值,都可以作为条件。例如我们在数据库中检索某个字符串,我们可以写一个非常常见的
UserService
查询用户名是否存在或者有效: