介绍 1。不受待见的空指针异常
2。糟糕的代码
这期内容当中小编将会给大家带来有关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中使用可选类如何实现解决空指针