- 断言是一个逻辑判断,用于检查不应该发生的情况;
- Assert关键字在jdk1.4中引入,可以通过jvm参数-enableassertions开启;
- Springboot中提供了Assert断言工具类,通常用于数据合法性检查
① 判断非空,参数minStamp必须为非空,否则抛出异常,不予放行
// 最小时间戳不允许为空 Assert.notNull(minStamp, "minStamp不允许为空");
②判断为空,参数mapperByName必须为空,否则抛出异常,不予放行
// 若查找出有符合条件的mapper则抛出异常,并提示异常信息“。。。” Assert.isNull(mapper, environment + "环境已存在相同的名称,任务失败!");
③要求参数必须为真true,否则抛出异常,不予放行
Assert.isTrue(StringUtils.isNotBlank(name),"员工姓名不能为空");
④要求list、set必须为有长度,即非空Not empty,否则抛出异常,不予放行
// 用法1:对传入的JsonArray进行判断,如果empty,不放行 Assert.notEmpty(jsonArray, "jsonArray is null"); // 用法2: 对传入的list集合进行判断,如果empty,不放行 public Result deleteByIds(Listids){ Assert.notEmpty(ids, "ids can not be null or empty"); // 执行删除操作 }
⑤要求参数String必须有内容,即Not blank,否则抛出异常不予放行
Assert.hasText(name, "当前人姓名不可为空"); Assert.hasText(ossPath, "文件路径不可为空");
⑥要求输入的参数必须是某种数据类型,否则抛出异常,不予放行
public void doSomething(Object object1, Object object2){
Assert.isInstanceOf(List.class, object1, "输入参数类型错误!必须为List格式参数");
Assert.isInstanceOf(String.class, object2, "输入参数类型错误!必须为String格式参数");
}
⑦要求参数’subType’必须是superType的子类或者实现类,否则抛出异常,不予通行
void isAssignable(Class superType, Class subType, String message);对象、数组、集合 ObjectUtils
1.获取对象的基本信息
2.判断工具//获取对象的类名。参数为null时候,返回字符串:“null”
String nullSafeClassName(Object obj);// 参数为null 时, 返回0
int nullSafeHashCode(Object obj);// 参数为null时。返回字符串:“null”
String nullSafeToString(boolean[] array)// 获取对象的HashCode(十六进制形式字符串),参数为null时候,返回0
String getIdentityHexString(Object obj)
- 判断数据是否为空
// 如果beanMap为空,是一个空map集合,直接返回
if (MapUtils.isEmpty(beanMap)) {
return;
}
// 如果list为空,是一个空list
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
// 获取所有字段,并对获取到的fields的数组进行非空判断
Field[] fields = FieldUtils.getAllFields(clazz);
if (ArrayUtils.isEmpty(fields)) {
return Collections.emptyList();
}
- 判断参数对象是否为数组
// 获取数组值
if (clazz.isArray()) {
return Array.newInstance(clazz.getComponentType(), 0);
}
- 判断数组中是否包含指定元素
if(applyingList.contains(String str)) {
// 如果申请列表当中有这个str元素,对应的状态设为0;
permissionDTO.setStatus(0);
}
判断参数对象是否为空,判断标准为:
Optional: Optional.empty() Array: length == 0 CharSequence: length == 0 Collection: Collection.isEmpty() Map: map.isEmpty()
- 其他工具方法
// 向参数数组的末尾追加新元素,并返回一个新数组 A[] addObjectToArray(A[] array, O obj) // 原生基础类数组-->包装类数组 Object[] toObjectArray(Object source)StringUtils
- 字符串判断工具
①判断字符串是否为null,或者“”,注意,包含空白符的字符串为非空
if (StringUtils.isEmpty(workNo)) {
return workNo; // 如果工号为空,返回输入的工号
}
②字符串是否以xxx开头或结尾忽略大小写
boolean endWithIgnoreCase(String str,String suffix); boolean StartWithIgnoreCase(String str,String prefix);
③是否包含空白符
boolean containsWhiteSpace(String str)
④判断字符串非空且长度不为0,即 not empty
boolean hasLength(charSequence str)
⑤判断字符串是否包含实际内容,即非仅包含空白符
boolean hasText(CharSequence str)
⑥判断字符串指定索引处是否包含一个子串
Boolean subStringMatch(charSequence str,int index, charSequence substring)
⑦ 计算一个字符串中指定子串出现的次数
int countOccurencesOf(String str, String sub)
- 字符串操作工具
①查找并替换指定子串
private static final ThreadLocalTHREAD_TRACE_ID = ThreadLocal.withInitial( // 获取一个uuid并把里面的"-" 替换成"" () -> UUID.randomUUID().toString().replace("-", ""));
②去除尾部的特定字符
String trimTrailingCharacter(String str, char trailingCharacter)
③去除头部的特定字符
String trimLeadingCharacter(String str,char leadingCharacter)
④去除头部的空白符
String trimLeadingWhitespace(String str);
⑤去除尾部的空白符
String trimTrailingWhiteSpace(String str);
⑥去除头部和尾部的空白符
String trimWhitespace(String str);
**例子CsvReader.java中**
public void setTrimWhitespace(boolean trimWhitespace) {
userSettings.trimWhitespace = trimWhitespace;
}
⑦删除开头、结尾、中间的空白符
String trimAllWhiteSpace(String str);
⑧删除指定子串
String delete(String inString, String pattern)
⑨删除指定字符(可以是多个)
String deleteAny(String inString, String charToDelete)
⑩对数组的每一项执行trim()方法
String[] trimArrayElements(String[] array)
将URL字符串进行解码
String uriDecode(String source, Charset charset)
- 路径相关工具方法
①解析路径字符串,优化其中的"…"
String cleanPath(String path)
②解析路径字符串,解析出文件名部分
String getFileName(String path)
③解析路径字符串,解析出文件名后缀名
String getFileNameExtension(String path)
④比较两个字符串,判断是否为同一个路径,会自动处理路径中的”…"
boolean pathEquals(String path1, String path2)
⑤删除文件路径名中的后缀部分
String stripFileNameEtension(String path)
⑥以"."作为分隔符,获取其最后一部分
String unqualify(String qualifiedName)
⑦以指定字符串作为分割符,获取其最后一部分
String unqualify(String qualifiedName, char separator)



