SpringBoot的Assert简单使用
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
不为空; 它不能是 null
空 String
并且不能是空字符串,否则返回异常 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, "父类不是子类");