Java中实现判断空字符的方法有哪些

  

Java中实现判断空字符的方法有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

前言

对于Java程序员来说,零是令人头痛的东西。时常会受到空指针异常(肺水肿)的骚扰。连Java的发明者都承认这是他的一项巨大失误。

那么,有什么办法可以避免在代码中写大量的判空语句呢?

有人说可以使用JDK8提供的可选来避免判空,但是用起来还是有些麻烦。

作者在日常工作中,封装了一个工具,可以可以链式调用对象成员而无需判空,相比原有的如果零逻辑和JDK8提供的可选更加优雅易用,在工程实践中大大提高了编码效率,也让代码更加的精准和优雅。

不优雅的判空调用

我想从事Java开发的小伙伴肯定有遇到过下面这种让人难受的判空逻辑:现在有一个用户类,学校是它的成员变量

/* *      * @author轴蛋白      * @since 2020-09-20      * @summary一个用户类定义      * (Ps:数据是lombok组件提供的注解,简化了预备等等的约定代码)      */@ data      公开课用户{      私人字符串名称;      私人字符串性别;      私立学校的学校;      @ data      公共静态类学校{      私人字符串scName;      私人地址的字符串;      }      }

现在想要获得学校的成员变量地址,一般的处理方式:

公共静态void main (String [] args) {
  
  用户轴蛋白=新用户();
  
  用户。学校学校=new User.School ();
  
  axin.setName (“hello");
  
  如果(Objects.nonNull(轴蛋白),,Objects.nonNull (axin.getSchool ())) {
  
  用户。学校userSc=axin.getSchool ();
  
  System.out.println (userSc.getAdress ());
  
  }
  
  }

获取地址时要对学校进行判空,虽然有些麻烦,到也能用,通过JDK8提供的可选的工具也是可以,但还是有些麻烦。
而下文的OptionalBean提供一种可以链式不断地调用成员变量而无需判空的方法,直接链式调用到你想要获取的目标变量,而无需担心空指针的问题。

链式调用成员变量

如果用了本文设计的工具OptionalBean,那么上述的调用可以简化成这样:

公共静态void main (String [] args) {
  
  用户轴蛋白=新用户();
  
  用户。学校学校=new User.School ();
  
  axin.setName (“hello");//1。基本调用
  
  字符串value1=OptionalBean.ofNullable(轴蛋白)
  
  .getBean(用户::getSchool)
  
  .getBean (User.School:: getAdress) . get ();
  
  System.out.println (value1);
  
  }

执行结果:

癑ava中实现判断空字符的方法有哪些"

其中用户的学校变量为空,可以看到代码并没有空指针,而是返回了空。这个工具怎么实现的呢?

OptionalBean工具

/* *      * @author轴蛋白      * @since 2020-09-10      * @summary链式调用bean中价值的方法      */公众最终类OptionalBean&肝移植;T& gt;{      私有静态最终OptionalBean&肝移植;及# 63;和gt;空=new OptionalBean&肝移植;和gt; ();      私人最后T值;      私人OptionalBean () {      这一点。值=https://www.yisu.com/zixun/null;      }/* *      *空值会抛出空指针      * @param价值      */私人OptionalBean (T值){      这一点。值=Objects.requireNonNull(价值);      }/* *      *包装一个不能为空的bean      * @param价值      * @param      * @return      */公共静态 OptionalBean (T值){      返回新OptionalBean <>(价值);      }/* *      *包装一个可能为空的bean      * @param价值      * @param      * @return      */公共静态 OptionalBean ofNullable (T值){      返回值==null & # 63;空():(价值);      }/* *      *取出具体的值      * @param fn      * @param      * @return      */公共T get () {      返回Objects.isNull(价值)& # 63;空:价值;      }/* *      *取出一个可能为空的对象      * @param fn      * @param

Java中实现判断空字符的方法有哪些