断言常用的方法 assert [əˈsɜːt]
- notNull(Object object) 当 object 不为 null 时抛出异常,notNull(Object object, String message) 方法允许您通过 message 定制异常信息。和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入参一定是 null;
- isTrue(boolean expression) / isTrue(boolean expression, String message) 当 expression 不为 true 抛出异常;
- notEmpty(Collection collection) / notEmpty(Collection collection, String message) 当集合未包含元素时抛出异常。notEmpty(Map map) / notEmpty(Map map, String message) 和 notEmpty(Object[] array, String message) / notEmpty(Object[] array, String message) 分别对 Map 和 Object[] 类型的入参进行判断;
- hasLength(String text) / hasLength(String text, String message) 当 text 为 null 或长度为 0 时抛出异常;
- hasText(String text) / hasText(String text, String message) 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, String message) subType 必须可以按类型匹配于 superType,否则将抛出异常;
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.Assert; public class Test { private final static Logger logger = LoggerFactory.getLogger(Test.class); public static void main(String[] args) { Test test = new Test(); test.f1(); } public void f1() { try { // String s1 = null;//hasText,notNull,hasLength均报异常 // String s1 = "";//hasText报异常,notNull不报异常,hasLength报异常 // String s1 = " ";//一个空格,hasText报异常,notNull不报异常,hasLength不报异常 // String s1 = " ";//三个空格,hasText报异常,notNull不报异常,hasLength不报异常 String s1 = "s";//hasText,notNull,hasLength均不报异常 Assert.hasText(s1, "hasText,s1不能为空,当前为空已抛出异常"); Assert.notNull(s1, "notNull,s1不能为空,当前为空已抛出异常"); Assert.hasLength(s1, "hasLength,s1不能为空,当前为空已抛出异常"); Assert.isTrue(1 < 2, "1<2需要为true");//不报异常 Assert.isTrue(1 > 2, "1<2需要为true");//报异常 Assert.isInstanceOf(String.class,s1);//不报异常 Assert.isInstanceOf(Object.class,s1);//不报异常 Assert.isInstanceOf(Integer.class,s1);//报异常 Assert.isAssignable(String.class,s1.getClass(),"s1需要是String类型的子类");//不报异常 Assert.isAssignable(String.class,new Integer(1).getClass(),"s1需要是String类型的子类");//报异常 Assert.isAssignable(Object.class,s1.getClass(),"s1需要是Object类型的子类");//不报异常 Assert.isAssignable(String.class,new Object().getClass(),"subType需要是superType的子类");//报异常 } catch (Exception e) { logger.error(e.getMessage()); } logger.info("运行正常"); } } //Assert.notNull:只有输入空,才会报异常;输入空字符比如""、空格不报异常; //Assert.hasLength:如果输入空、空字符报异常;输入空格不报异常; //Assert.hasText:只有输入空、空字符比如""、空格或多个空格都会报异常;(不把空格算作内容) //校验的越来越严格