Guava 优雅判断对象是否null和空字符串

Guava 优雅判断对象是否null和空字符串

一、前言

代码中对入参的判断是必不可少的,其中判断是否为null或者为空是写的最多的代码,这些代码在每个需要判断的地方都写一遍重复的代码会很多看上去非常臃肿,对这部分代码的优化Guava已经为我们写好了,拿来就可以使用。

另外我们通过参考Guava源代码实现思路,自己写一个方法实现同样的功能。

-----------------------------------------------------------------------------------------------------

注意:使用Guava需要在IDEA中导入Guava依赖,可以通过maven或者gradle导入依赖。

gradle在build.gradle文件中导入依赖:compile group: 'com.google.guava', name: 'guava', version: '28.0-jre'

二、Guava优雅的判断对象是否为null

  • 判断对象为null的实例
import java.util.Objects;

public class NotNull {
    public static void main(String[] args) {
        //定义一个 字符串为null的参数
        String strNull = null;

        //调用方法传入 null参数
        addNull(strNull);
   }

    private static void addNull(String str) {
        //Guava提供判断为null的方法,对参数进行判断。
        Objects.requireNonNull(str);
        System.out.println(str);
    }
}
  • 运行结果
Exception in thread "main" java.lang.NullPointerException
	at java.util.Objects.requireNonNull(Objects.java:203)
	at day09.test.NotNull.addNull(NotNull.java:27)
	at day09.test.NotNull.main(NotNull.java:21)
  • 查看Objects.requireNonNull源码
public static <T> T requireNonNull(T obj) {
        //判断参数为null 则抛出异常信息
        if (obj == null)
            throw new NullPointerException();
        //参数不为null,则返回参数本身
        return obj;
    }

三、封装一个方法实现Objects.requireNonNull 功能

Objects.requireNonNull源码中可以看到只能判断null,没有判断空字符串。我们按照源代码实现的思路自己写一个方法实现null和空字符串的判断。

  • 新建一个工具类,在类中写一个方法实现null和空字符串的判断。 
import com.google.common.base.Strings;
public class StringUtils {
    public static String requiredNonNullOrEmpty(String str) {
        if (Strings.isNullOrEmpty(str)) {
            throw new IllegalStateException("should non null or empty");
        }
        return str;
    }
}
  •  测试工具类
import java.util.Objects;

public class NotNull {
    public static void main(String[] args) {
        //定义一个 字符串为空和null的参数
        String strNull = null;
        String strEmpty = "";

        //调用方法分别传入 null和空字符串的参数
//        addNull(strNull);
        addEmpty(strEmpty);
    }

    private static void addNull(String str) {

        //使用我们写的工具类对参数进行判断
        String nullOrEmpty = StringUtils.requiredNonNullOrEmpty(str);
        System.out.println(nullOrEmpty);
    }

    private static void addEmpty(String str) {
        
        //使用我们写的工具类对参数进行判断
        String nullOrEmpty = StringUtils.requiredNonNullOrEmpty(str);
        System.out.println(nullOrEmpty);
    }
}
  • 测试结果
    • 当传入的参数为null 或者空字符串时,抛出了异常说明对参数的判断起到了作用。
Exception in thread "main" java.lang.IllegalStateException: should non null or empty
	at day09.test.StringUtils.requiredNonNullOrEmpty(StringUtils.java:11)
	at day09.test.NotNull.addEmpty(NotNull.java:30)
	at day09.test.NotNull.main(NotNull.java:20)
发布了316 篇原创文章 · 获赞 117 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/m0_38039437/article/details/104847069