org.springframework.util.Assert 这个类,叫方法入参检测工具类

来源:互联网 发布:咫尺网络西安 编辑:程序博客网 时间:2024/05/16 23:45
Web应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回。类似的,当我们在编写类的方法时,也常常需要对方法入参进行合法性检查,如果入参不符合要求,方法将通过抛出异常的方式拒绝后续处理。举一个例子:有一个根据文件名获取输入流的方法:InputStreamgetData(String file),为了使方法能够成功执行,必须保证 file 入参不能为 null或空白字符,否则根本无须进行后继的处理。这时方法的编写者通常会在方法体的最前面编写一段对入参进行检测的代码,如下所示
public ConfigAttributeDefinition getAttributes(Object object) {
        Assert.notNull(object, "Object cannot be null");
system.out.print("!!!!");

}

当object部位空时,会打印出!!!

当object为空时,会抛出object cannot be null的异常


Assert 翻译为中文为“断言”,使用过 JUnit的读者都熟知这个概念,它断定某一个实际的运行值和预期想一样,否则就抛出异常。Spring 对方法入参的检测借用了这个概念,其提供的Assert 类拥有众多按规则对方法入参进行断言的方法,可以满足大部分方法入参检测的要求。这些断言方法在入参不满足要求时就会抛出IllegalArgumentException。下面,我们来认识一下 Assert 类中的常用断言方法:

断言方法说明notNull(Object object)当 object 不为 null 时抛出异常,notNull(Object object, String message)方法允许您通过 message 定制异常信息。和 notNull() 方法断言规则相反的方法是 isNull(Objectobject)/isNull(Object object, String message),它要求入参一定是 null;isTrue(boolean expression) / isTrue(boolean expression,String message)当 expression 不为 true 抛出异常;notEmpty(Collection collection) / notEmpty(Collectioncollection, String message)当集合未包含元素时抛出异常。notEmpty(Map map) / notEmpty(Map map, Stringmessage) 和 notEmpty(Object[] array, String message) /notEmpty(Object[] array, String message) 分别对 Map 和 Object[]类型的入参进行判断;hasLength(String text) / hasLength(String text, Stringmessage)当 text 为 null 或长度为 0 时抛出异常;hasText(String text) / hasText(String text, Stringmessage)text 不能为 null 且必须至少包含一个非空格的字符,否则抛出异常;isInstanceOf(Class clazz, Object obj) /isInstanceOf(Class type, Object obj, String message)如果 obj 不能被正确造型为 clazz 指定的类将抛出异常;isAssignable(Class superType, Class subType) /isAssignable(Class superType, Class subType, Stringmessage)subType 必须可以按类型匹配于 superType,否则将抛出异常;


1 0
原创粉丝点击