Java中的Assert断言常用语法

断言常用的方法  assert  [əˈsɜːt] 

  1. notNull(Object object) 当 object 不为 null 时抛出异常,notNull(Object object, String message) 方法允许您通过 message 定制异常信息。和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入参一定是 null;
  2.  isTrue(boolean expression) / isTrue(boolean expression, String message) 当 expression 不为 true 抛出异常;
  3. 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[] 类型的入参进行判断;
  4. hasLength(String text) / hasLength(String text, String message)  当 text 为 null 或长度为 0 时抛出异常;
  5.  hasText(String text) / hasText(String text, String message)  text 不能为 null 且必须至少包含一个非空格的字符,否则抛出异常;
  6. isInstanceOf(Class clazz, Object obj) / isInstanceOf(Class type, Object obj, String message)  如果 obj 不能被正确造型为 clazz 指定的类将抛出异常;
  7. 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:只有输入空、空字符比如""、空格或多个空格都会报异常;(不把空格算作内容)
    //校验的越来越严格

     

你可能感兴趣的:(Java,java)