Java8中使用可选类如何实现解决空指针

  介绍

这期内容当中小编将会给大家带来有关Java8中使用可选类如何实现解决空指针,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

前言

Java8由Oracle在2014年发布,是继Java5之后最具革命性的版本。

Java8吸收其他语言的精髓带来了函数式编程,λ表达式,流流等一系列新特性,学会了这些新特性,可以让你实现高效编码优雅编码。

1。不受待见的空指针异常

有个小故事:零引用最早是由英国科学家Tony Hoare提出的,多年后霍尔为自己的这个想法感到后悔莫及,并认为这是“价值百万的重大失误“。可见空指针是多么不受待见。

NullPointerException是Java开发中最常遇见的异常,遇到这种异常我们通常的解决方法是在调用的地方加一个如果判空。

如果判空越多会造成过多的代码分支,后续代码维护也就越来越复杂。

2。糟糕的代码

比如看下面这个例子,使用过多的如果判空。

人对象里定义了房子对象,房子对象里定义了地址对象:

公共类人
  私人字符串名称;
  私人int年龄;
  私人住宅房子;
  
  公共房屋getHouse () {
  返回房子;
  }
  }
  
  类的房子{
  私人长价格;
  私有地址地址;
  
  公共地址getAddress () {
  返回地址;
  }
  }
  
  类地址{
  私人的字符串;
  私人的字符串;
  
  公共字符串getCity () {
  返回城市;
  }
  }

现在获取这个人买房的城市,那么通常会这样写:

公共字符串getCity2(人){
  如果(人!=null) {
  房子房子=person.getHouse ();
  如果(房子!=null) {
  地址地址=house.getAddress ();
  如果(地址!=null) {
  字符串城市=address.getCity ();
  返回城市;
  }
  }
  }
  返回“unknown";
  }

为了避免空指针异常,每一层都加上判断,但是这样会造成代码嵌套太深,不易维护。

你可能想到如何改造上面的代码,比如加上提前判空退出:

 

但是这样简单的代码已经加入了三个退出条件,非常不利于后面代码维护。那怎样才能将代码写的优雅一点呢,下面引入今天的主角“Optional"。

3。解决空指针的“银弹“

从Java8开始引入了一个新类java.util。可选的,这是一个对象的容器,意味着可能包含或者没有包含一个非空的值。下面重点看一下可选的常用方法:

 OptionaloptionalPerson=Optional.Empty (); 

指定非空值创建可选的对象。

Java8中使用可选类如何实现解决空指针