1.string 字符串非空校验
| StringUtils.isEmpty(String str);与StringUtils.isBlank(String str); 区别: StringUtils.isEmpty(String str);==>str==null 或 str.length()==0 注意空格做非空处理 StringUtils.isBlank(String str);==>str==null 或 str.trim().length()==0 注意空格做空处理,且StringUtils.isBlank("\t \n \f \r") = true //对于制表符、换行符、换页符和回车符做空处理;StringUtils.isBlank("\b") = false //"\b"为单词边界符; StringUtils.trim(String str);这个方法会去掉字符串两端的控制符,且对制表符、换行符、换页符和回车符做空处理及对"\b"为单词边界符也做空处理 ;StringUtils.trim(" \b \t \n \f \r ") = "" |
2.Collection集合非空校验
| CollectionUtils..isEmpty(Collection coll);===>等价于coll==null || coll.isEmpty();(coll.size==0) |
3.Object非空校验
| Objects.isNull(Object obj);与object== null 没区别,只是由于jdk8引入lambda,所以在写法 Objects::isNull更直观 解释:: 方法引用(方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法。方法引用提供了一种引用而不执行方法的方式,它需要由兼容的函数式接口构成的目标类型上下文。计算时,方法引用会创建函数式接口的一个实例) 1.静态方法引用 ClassName::staticMethod ==>等价于(args) -> ClassName.staticMethod (args),把lambda表达式的参数直接当成staticMethod的参数来调用 2.实例方法引用 objectName::instanceMethod ==>等价于(args) -> ClassName.staticMethod (args) 把lambda表达式的参数直接当成instanceMethod的参数来调用 ClassName::instanceMethod ==>等价于(args) -> args.instanceMethod() 或者(arg1,arg2) -> arg1.instanceMethod(arg2)其中ClassName是第一个参数arg1(当做目标对象),其他剩余参数arg2当成该方法的参数 3.构造方法引用(构造器引用)ClassName::new ==>等价于(args) ->new ClassName(args) ,把lambda表达式的参数当成ClassName构造器的参数 |
4.使用Assert
常用断言方法:
Assert.notNull(Object object, "object is required") - 对象非空
Assert.isTrue(Object object, "object must be true") - 对象必须为true
Assert.notEmpty(Collection collection, "collection must not be empty") - 集合非空
Assert.hasLength(String text, "text must be specified") - 字符不为null且字符长度不为0
Assert.hasText(String text, "text must not be empty") - text 不为null且必须至少包含一个非空格的字符
Assert.isInstanceOf(Class clazz, Object obj, "clazz must be of type [clazz]") - obj必须能被正确造型成为clazz 指定的类