Assert断言替代了传统的if判断,减少业务参数校验的代码行数,提高程序可读性

Assert.isTrue: 布尔表达式 expression 必须为 true,如果不为 true 则返回异常 message

Assert.isTrue(boolean expression, String message);

// 例子:
// 断言为true java.lang.IllegalArgumentException: 结果不为true
// Assert.isTrue(false, "结果不为true");

源码

    @Contract("false, _ -> fail")
    public static void isTrue(boolean expression, String message) {
        if (!expression) {
            throw new IllegalArgumentException(message);
        }
    }

Assert.state: 布尔表达式 expression 必须为 true,如果不为 true 则返回异常 message,这个和 Assert.isTrue 的源码一毛一样

Assert.state(boolean expression, String message);

// 例子:
// java.lang.IllegalArgumentException: 结果不为true
// Assert.state(false, "结果不为true");

源码

    @Contract("false, _ -> fail")
    public static void state(boolean expression, String message) {
        if (!expression) {
            throw new IllegalArgumentException(message);
        }
    }

Assert.isNull: 断言对象为 null,否则返回异常 message

Assert.isNull(@Nullable Object object, String message);

// 例子:
// java.lang.IllegalArgumentException: 结果不为NULL
//  Assert.isNull("", "结果不为NULL");

Assert.notNull: 断言 object 对象不是 null,否则返回异常 message

Assert.notNull(@Nullable Object object, String message);

// 例子
// java.lang.IllegalArgumentException: 结果为NULL
// Assert.notNull(null, "结果为NULL");

Assert.hasLength: 断言给定的 text 不为空,否则返回异常 message

Assert.hasLength(@Nullable String text, String message)


// 例子
// java.lang.IllegalArgumentException: 结果为空
// Assert.hasLength(null, "结果为空");

Assert.hasText:断言给定的 text 不为空; 它不能是 nullString 并且不能是空字符串,否则返回异常 message

Assert.hasText(@Nullable String text, String message)

// 例子
// java.lang.IllegalArgumentException: 结果为空
// Assert.hasText("", "结果为空");

Assert.doesNotContain: 断言给定 textToSearch 不包含指定的子字符串,如果 textToSearch 包含了 substring 返回异常 message

Assert.doesNotContain(@Nullable String textToSearch, String substring, String message)


// 例子
// java.lang.IllegalArgumentException: 结果包含
// Assert.doesNotContain("1234", "4", "结果包含");

Assert.notEmpty:断言数组包含元素;它不能且 null 必须至少包含一个元素。否则返回异常 message

Assert.notEmpty(@Nullable Object[] array, String message) 

// 例子
// java.lang.IllegalArgumentException: 结果为空
// Assert.notEmpty(new String[]{}, "结果为空");

Assert.noNullElements:断言数组不包含任何 null 元素。否则返回异常 message

Assert.noNullElements(@Nullable Object[] array, String message) 

// 例子
// java.lang.IllegalArgumentException: 数组的元素有null
// Assert.noNullElements(new String[]{"1","2",null}, "数组的元素有null");

Assert.isInstanceOf:断言给定对象是给定类的实例。否则返回异常 message

Assert.isInstanceOf(Class<?> type, @Nullable Object obj, String message) 


// 例子
// java.lang.IllegalArgumentException: 结果不是String: java.lang.Integer
// Assert.isInstanceOf(String.class, 1, "结果不是String");

Assert.isAssignable:断言一个类型(Class)是否可以被赋值给另一个类型(Class)。换句话说,它检查的是两个 Class 对象之间是否存在继承或实现关系。

Assert.isAssignable(Class<?> superType, @Nullable Class<?> subType, String message) 


// 例子
// java.lang.IllegalArgumentException: 父类不是子类: class java.lang.Integer
// Assert.isAssignable(String.class, Integer.class, "父类不是子类");

标签: java, springboot

添加新评论