• 12.17个提升开发效率的“轮子”(2)


    5. BooleanUtils

    在java中布尔值,随处可见。

    如果你使用了布尔的包装类:Boolean,总感觉有点麻烦,因为它有三种值:nulltruefalse。我们在处理Boolean对象时,需要经常判空。

    头疼!!!

    但如果使用BooleanUtils类处理布尔值,心情一下子就愉悦起来了。

    5.1 判断true或false

    如果你想判断某个参数的值是true或false,可以直接使用isTrueisFalse方法。例如:

    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。

    可以使用isNotTrueisNotFalse方法。例如:

    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

    示例中的:isEmptyisNotEmptyisBlankisNotBlank,这4个判空方法你们可以根据实际情况使用。

    优先推荐使用isBlankisNotBlank方法,因为它会把" "也考虑进去。

    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类还有一些其他的功能,这里就不多介绍了。

  • 相关阅读:
    PHP WEB项目文件夹上传下载解决方案
    .NET WEB项目文件夹上传下载解决方案
    C#.NET WEB项目文件夹上传下载解决方案
    python 多重继承
    python 多态
    python 类型判断-- isinstance函数
    python 继承
    hdu 5692 Snacks 线段树+dfs
    线段树的输出
    python 定义类方法
  • 原文地址:https://www.cnblogs.com/midiyu/p/16841266.html
Copyright © 2020-2023  润新知