12.17个提升开发效率的“轮子”(2)
5. BooleanUtils
在java中布尔值,随处可见。
如果你使用了布尔的包装类:Boolean
,总感觉有点麻烦,因为它有三种值:null
、true
、false
。我们在处理Boolean对象时,需要经常判空。
头疼!!!
但如果使用BooleanUtils
类处理布尔值,心情一下子就愉悦起来了。
5.1 判断true或false
如果你想判断某个参数的值是true或false,可以直接使用isTrue
或isFalse
方法。例如:
1 Boolean aBoolean = new Boolean(true); 2 System.out.println(BooleanUtils.isTrue(aBoolean)); 3 System.out.println(BooleanUtils.isFalse(aBoolean));
5.2 判断不为true或不为false
有时候,需要判断某个参数不为true,即是null或者false。或者判断不为false,即是null或者true。
可以使用isNotTrue
或isNotFalse
方法。例如:
1 Boolean aBoolean = new Boolean(true); 2 Boolean aBoolean1 = null; 3 System.out.println(BooleanUtils.isNotTrue(aBoolean)); 4 System.out.println(BooleanUtils.isNotTrue(aBoolean1)); 5 System.out.println(BooleanUtils.isNotFalse(aBoolean)); 6 System.out.println(BooleanUtils.isNotFalse(aBoolean1));
执行结果:
false
true
true
true
5.3 转换成数字
如果你想将true转换成数字1,false转换成数字0,可以使用toInteger
方法:
1 Boolean aBoolean = new Boolean(true); 2 Boolean aBoolean1 = new Boolean(false); 3 System.out.println(BooleanUtils.toInteger(aBoolean)); 4 System.out.println(BooleanUtils.toInteger(aBoolean1));
执行结果:
1
0
5.4 Boolean转换成布尔值
我们有时候需要将包装类Boolean
对象,转换成原始的boolean
对象,可以使用toBoolean
方法。例如:
1 Boolean aBoolean = new Boolean(true); 2 Boolean aBoolean1 = null; 3 System.out.println(BooleanUtils.toBoolean(aBoolean)); 4 System.out.println(BooleanUtils.toBoolean(aBoolean1)); 5 System.out.println(BooleanUtils.toBooleanDefaultIfNull(aBoolean1, false));
我们无需额外的判空了,而且还可以设置Boolean对象为空时返回的默认值。
BooleanUtils类的方法还有很多,有兴趣的小伙伴可以看看下面的内容:
6. StringUtils
字符串
(String)在我们的日常工作中,用得非常非常非常多。
在我们的代码中经常需要对字符串判空,截取字符串、转换大小写、分隔字符串、比较字符串、去掉多余空格、拼接字符串、使用正则表达式等等。
如果只用String类提供的那些方法,我们需要手写大量的额外代码,不然容易出现各种异常。
现在有个好消息是:org.apache.commons.lang3
包下的StringUtils
工具类,给我们提供了非常丰富的选择。
6.1 字符串判空
其实空字符串,不只是null一种,还有""," ","null"等等,多种情况。
StringUtils给我们提供了多个判空的静态方法,例如:
1 String str1 = null; 2 String str2 = ""; 3 String str3 = " "; 4 String str4 = "abc"; 5 System.out.println(StringUtils.isEmpty(str1)); 6 System.out.println(StringUtils.isEmpty(str2)); 7 System.out.println(StringUtils.isEmpty(str3)); 8 System.out.println(StringUtils.isEmpty(str4)); 9 System.out.println("====="); 10 System.out.println(StringUtils.isNotEmpty(str1)); 11 System.out.println(StringUtils.isNotEmpty(str2)); 12 System.out.println(StringUtils.isNotEmpty(str3)); 13 System.out.println(StringUtils.isNotEmpty(str4)); 14 System.out.println("====="); 15 System.out.println(StringUtils.isBlank(str1)); 16 System.out.println(StringUtils.isBlank(str2)); 17 System.out.println(StringUtils.isBlank(str3)); 18 System.out.println(StringUtils.isBlank(str4)); 19 System.out.println("====="); 20 System.out.println(StringUtils.isNotBlank(str1)); 21 System.out.println(StringUtils.isNotBlank(str2)); 22 System.out.println(StringUtils.isNotBlank(str3)); 23 System.out.println(StringUtils.isNotBlank(str4));
执行结果:
true true false false ===== false false true true ===== true true true false ===== false false false true
示例中的:isEmpty
、isNotEmpty
、isBlank
和isNotBlank
,这4个判空方法你们可以根据实际情况使用。
优先推荐使用
isBlank
和isNotBlank
方法,因为它会把" "
也考虑进去。
6.2 分隔字符串
分隔字符串是常见需求,如果直接使用String类的split方法,就可能会出现空指针异常。
1 String str1 = null; 2 System.out.println(StringUtils.split(str1,",")); 3 System.out.println(str1.split(","));
执行结果:
1 null 2 Exception in thread "main" java.lang.NullPointerException 3 at com.sue.jump.service.test1.UtilTest.main(UtilTest.java:21)
使用StringUtils的split方法会返回null,而使用String的split方法会报指针异常。
6.3 判断是否纯数字
给定一个字符串,判断它是否为纯数字,可以使用isNumeric
方法。例如:
1 String str1 = "123"; 2 String str2 = "123q"; 3 String str3 = "0.33"; 4 System.out.println(StringUtils.isNumeric(str1)); 5 System.out.println(StringUtils.isNumeric(str2)); 6 System.out.println(StringUtils.isNumeric(str3));
执行结果:
true
false
false
6.4 将集合拼接成字符串
有时候,我们需要将某个集合的内容,拼接成一个字符串,然后输出,这时可以使用join
方法。例如:
1 List<String> list = Lists.newArrayList("a", "b", "c"); 2 List<Integer> list2 = Lists.newArrayList(1, 2, 3); 3 System.out.println(StringUtils.join(list, ",")); 4 System.out.println(StringUtils.join(list2, " "));
执行结果:
a,b,c
1 2 3
7. Assert
很多时候,我们需要在代码中做判断:如果不满足条件,则抛异常。
有没有统一的封装呢?
其实spring
给我们提供了Assert
类,它表示断言
。
7.1 断言参数是否为空
断言参数
是否空,如果不满足条件,则直接抛异常。
1 String str = null; 2 Assert.isNull(str, "str必须为空"); 3 Assert.isNull(str, () -> "str必须为空"); 4 Assert.notNull(str, "str不能为空");
如果不满足条件就会抛出IllegalArgumentException
异常。
7.2 断言集合是否为空
断言集合
是否空,如果不满足条件,则直接抛异常。
1 List<String> list = null; 2 Map<String, String> map = null; 3 Assert.notEmpty(list, "list不能为空"); 4 Assert.notEmpty(list, () -> "list不能为空"); 5 Assert.notEmpty(map, "map不能为空");
如果不满足条件就会抛出IllegalArgumentException
异常。
7.3 断言条件是否为空
断言是否满足某个条件
,如果不满足条件,则直接抛异常。
1 List<String> list = null; 2 Assert.isTrue(CollectionUtils.isNotEmpty(list), "list不能为空"); 3 Assert.isTrue(CollectionUtils.isNotEmpty(list), () -> "list不能为空");
当然Assert类还有一些其他的功能,这里就不多介绍了。