断言
- 断言是一个逻辑判断,用于检查不应该发生的情况;
- Assert关键字在jdk1.4中引入,可以通过jvm参数-enableassertions开启;
- Springboot中提供了Assert断言工具类,通常用于数据合法性检查
① 判断非空,参数minStamp必须为非空,否则抛出异常,不予放行
Assert.notNull(minStamp, "minStamp不允许为空");
②判断为空,参数mapperByName必须为空,否则抛出异常,不予放行
Assert.isNull(mapper, environment + "环境已存在相同的名称,任务失败!");
③要求参数必须为真true,否则抛出异常,不予放行
Assert.isTrue(StringUtils.isNotBlank(name),"员工姓名不能为空");
④要求list、set必须为有长度,即非空Not empty,否则抛出异常,不予放行
Assert.notEmpty(jsonArray, "jsonArray is null");
public Result deleteByIds(List<Long> ids){
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.获取对象的基本信息
//获取对象的类名。参数为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)
2.判断工具
if (MapUtils.isEmpty(beanMap)) {
return;
}
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
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)) {
permissionDTO.setStatus(0);
}
判断参数对象是否为空,判断标准为:
Optional: Optional.empty()
Array: length == 0
CharSequence: length == 0
Collection: Collection.isEmpty()
Map: map.isEmpty()
<A, O extends A> 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 ThreadLocal<String> THREAD_TRACE_ID = ThreadLocal.withInitial(
() -> 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)
|