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

举报
brucexiaogui 发表于 2021/11/25 22:34:35 2021/11/25
【摘要】 Guava 优雅判断对象是否null和空字符串 一、前言 代码中对入参的判断是必不可少的,其中判断是否为null或者为空是写的最多的代码,这些代码在每个需要判断的地方都写一遍重复的代码会很多看上去非常臃肿,对这部分代码的优化Guava已经为我们写好了,拿来就可以使用。 另外我们通过参考Guava源代码实现思路,自己写一个方...

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)
  
 

 

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/104847069

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。