Java编程中的断言工具类(org.springframework.util.Assert)---Spring框架

一、什么是断言  

  断言(Assertion)是Java中一条语句,包含一个布尔表达式。

        当布尔值为真,程序则被认为是正确的;

        当布尔值为假,则系统会抛出异常(错误)。

二、Assert学习

 当我们在编写类的方法时,常常需要对方法入参进行合法性检查,如果入参不符合要求,方法将通过抛出异常的方式拒绝后续逻辑的处理

1、notNull(Object object, String message)

参数说明:

  object:为 null 时抛出异常

  message:定制异常信息

案例:

    String s=null;
    Assert.notNull(s,"出现null值");

    结果:java.lang.IllegalArgumentException: 出现null值

源代码:

    public static void notNull(@Nullable Object object, String message) {
        if (object == null) {
            throw new IllegalArgumentException(message);
        }
    }

 

2、notNull(Object object)---这个方法已经弃用,不建议使用

参数说明:

  object:为 null 时抛出异常

案例:

    String s=null;
    Assert.notNull(s);

    结果:java.lang.IllegalArgumentException: [Assertion failed] - this argument is required; it must not be null

源代码:

    @Deprecated
    public static void notNull(@Nullable Object object) {
        notNull(object, "[Assertion failed] - this argument is required; it must not be null");
    }

 

3、isNull(Object object)---这个方法已经弃用,不建议使用

参数说明:

  object:不为 null 时抛出异常

案例:

    String s="aaa";
    Assert.isNull(s);

    结果:java.lang.IllegalArgumentException: [Assertion failed] - the object argument must be null

源代码:

    @Deprecated
    public static void isNull(@Nullable Object object) {
        isNull(object, "[Assertion failed] - the object argument must be null");
    }

 

4、isNull(Object object, String message)

参数说明:

  object:不为 null 时抛出异常

  message:定制异常信息

案例:

    String s="aaa";
    Assert.isNull(s,"参数不是null值");

    结果:java.lang.IllegalArgumentException: 参数不是null值

 源代码:

    public static void isNull(@Nullable Object object, String message) {
        if (object != null) {
            throw new IllegalArgumentException(message);
        }
    }

 

5、isTrue(boolean expression)---这个方法已经弃用,不建议使用

参数说明:

  expression:表达式不为true时抛出异常

案例:

    boolean b= false;
    Assert.isTrue(b);

    结果:java.lang.IllegalArgumentException: [Assertion failed] - this expression must be true

源代码:

    @Deprecated
    public static void isTrue(boolean expression) {
        isTrue(expression, "[Assertion failed] - this expression must be true");
    }

 

6、isTrue(boolean expression, String message)

参数说明:

  expression:表达式不为true时抛出异常

  message:定制异常信息

案例:

    boolean b= false;
    Assert.isTrue(b,"表达式值为false,出现异常");

    结果:java.lang.IllegalArgumentException: 表达式值为false,出现异常

源代码:

    public static void isTrue(boolean expression, String message) {
        if (!expression) {
            throw new IllegalArgumentException(message);
        }
    }

 

7、notEmpty(Collection<?> collection)---这个方法已经弃用,不建议使用

参数说明:

  collection:集合为空,抛出异常

案例:

    List<Object> list = new ArrayList<>();
    Assert.notEmpty(list);

    结果:java.lang.IllegalArgumentException: [Assertion failed] - this collection must not be empty: it must contain at least 1 element

源代码:

    @Deprecated
    public static void notEmpty(@Nullable Collection<?> collection) {
        notEmpty(collection,
                "[Assertion failed] - this collection must not be empty: it must contain at least 1 element");
    }

 

8、notEmpty(Collection<?> collection, String message)

参数说明:

  collection:集合为空,抛出异常

  message:定制异常信息

案例:

    List<Object> list = new ArrayList<>();
    Assert.notEmpty(list,"这个集合为空");

    结果:java.lang.IllegalArgumentException: 这个集合为空

源代码:

    public static void notEmpty(@Nullable Collection<?> collection, String message) {
        if (CollectionUtils.isEmpty(collection)) {
            throw new IllegalArgumentException(message);
        }
    }

 

9、hasLength(String text)---这个方法已经弃用,不建议使用

参数说明:

  text:为null或长度为0时,抛出异常

案例:

    String s=null;
    Assert.hasLength(s);

    结果:java.lang.IllegalArgumentException: [Assertion failed] - this String argument must have length; it must not be null or empty

源代码:

    @Deprecated
    public static void hasLength(@Nullable String text) {
        hasLength(text,
                "[Assertion failed] - this String argument must have length; it must not be null or empty");
    }

 

10、hasLength(String text, String message)

参数说明:

  text:为null或长度为0时,抛出异常

  message:定制异常信息

案例:

    String s=null;
    Assert.hasLength(s,"字符串为null或长度为0");

    结果:java.lang.IllegalArgumentException: 字符串为null或长度为0

源代码:

    public static void hasLength(@Nullable String text, String message) {
        if (!StringUtils.hasLength(text)) {
            throw new IllegalArgumentException(message);
        }
    }

 

11、hasText(String text)---这个方法已经弃用,不建议使用

参数说明:

  text:为null或空格时,抛出异常

案例:    

    String s="";
    Assert.hasText(s);

    结果:java.lang.IllegalArgumentException: [Assertion failed] - this String argument must have text; it must not be null, empty, or blank

源代码:

    @Deprecated
    public static void hasText(@Nullable String text) {
        hasText(text,
                "[Assertion failed] - this String argument must have text; it must not be null, empty, or blank");
    }

 

12、hasText(String text, String message)

参数说明:

  text:为null或空格时,抛出异常

  message:定制异常信息

案例:    

    String s="";
    Assert.hasText(s,"字符串为null或空格时,抛出异常");

    结果:java.lang.IllegalArgumentException: 字符串为null或空格时,抛出异常

源代码:

    public static void hasText(@Nullable String text, String message) {
        if (!StringUtils.hasText(text)) {
            throw new IllegalArgumentException(message);
        }
    }

 

13、doesNotContain(String textToSearch, String substring)---这个方法已经弃用,不建议使用

参数说明:

  textToSearch:给定的字符串文本

  substring:指定的子字符串

  解说:textToSearch 包含 substring ,则抛出异常(substring 的字符串在textToSearch 中出现,就会抛出异常)

案例:    

    String textToSearch="123ACB456";
    String substring="ACB";

    Assert.doesNotContain(textToSearch,substring);

    结果:java.lang.IllegalArgumentException: [Assertion failed] - this String argument must not contain the substring [ACB]

源代码:

    @Deprecated
    public static void doesNotContain(@Nullable String textToSearch, String substring) {
        doesNotContain(textToSearch, substring,
                () -> "[Assertion failed] - this String argument must not contain the substring [" + substring + "]");
    }

 

14、doesNotContain(String textToSearch, String substring, String message)

参数说明:

  textToSearch:给定的字符串文本

  substring:指定的子字符串

  message:定制异常信息

  解说:textToSearch 包含 substring ,则抛出异常(substring 的字符串在textToSearch 中出现,就会抛出异常)

案例:    

    String textToSearch="123ACB456";
    String substring="ACB";
    Assert.doesNotContain(textToSearch,substring,"textToSearch 包含 substring,抛出异常");

    结果:java.lang.IllegalArgumentException: textToSearch 包含 substring,抛出异常

源代码:

    public static void doesNotContain(@Nullable String textToSearch, String substring, String message) {
        if (StringUtils.hasLength(textToSearch) && StringUtils.hasLength(substring) &&
                textToSearch.contains(substring)) {
            throw new IllegalArgumentException(message);
        }
    }

 

15、其他

 

 

posted @ 2022-11-16 00:04  向大海  阅读(2319)  评论(0编辑  收藏  举报