作者:刘仁鹏
GitHub地址:https://github.com/LingPaicoder/agile-base-4j
转载请注明出处
1. 简介
- 之前为大家介绍过用Kotlin语言实现的校验器版本。但大家工作中,很多时候都是使用Java语言进行开发。所以这里再介绍一下校验器的Java语言实现。
- 功能与Kotlin的版本差别不大,但受语言的影响,特性上会有所不同。
- 首先还是介绍一下校验器的功能。
它是一款用于做 参数上下文校验 的工具类。说起校验器,大家比较熟悉的是Java的BeanValidation规范。但BeanValidation规范是用于做 参数字面值校验 的,即只能对 参数本身的值 做某种规则性的判断,如果需要对参数进行某种运算后的结果(例如算数运算、DB操作等)进行规则判断,就无法实现了。
这种对 参数进行某种运算后的结果 进行校验的方式,我把它称作 参数上下文校验。而本文要介绍的校验器就是为了解决这种应用场景而生的。 - 先来看一下校验器实际使用时的效果吧,这是一个对参数是否符合身份证号规则进行判断的方法:
public boolean valide(String idCard) {
try {
CheckUtil.check(idCard, StrRuler.notNull(), StrRuler.lengthEq(18));
String front17Part = idCard.substring(0, 17);
CheckUtil.check(front17Part, StrRuler.num());
String lastStr = getLastCharByFront17Part(front17Part);
CheckUtil.check(lastStr, StrRuler.eq(idCard.substring(17)));
return true;
} catch (CheckException e) {
return false;
}
}
- 代码中的第3、5、7行就是三次校验动作,这里通过CheckUtil的check方法,对校验目标进行规则校验,简化代码,提高可读性。
- 这里要额外说明一点的是,因为Java代码对null一般都需要额外处理,这里校验器也遵循这个约定,所有的内置的非nutNull规则,当校验目标为null时都按校验通过处理,因此当校验目标要求不能为null时,需要显式的通过notNull规则标识,这一特性与Kotlin的实现版本不同,需要特别注意。
- 接下来就一起看一下对校验器更全面的介绍。
2.特性
下面这个图是校验器的特性总览。

网友评论