当前位置: 首页 > 科技观察

如何优雅地解析空指针?

时间:2023-03-14 15:05:20 科技观察

1。简介在实际的系统运行过程中,难免会报NullPointerException。其本质原因是数据或对象为空,导致程序进一步执行时报错!一般常规的解决方案也是加一个if判断即可。if(obj!=null){//doSomthing}如果需要判断的对象太多,难免会有很多Null的判断语句,一旦这些语句增多,我们的代码就会变得惨不忍睹。针对这种情况,我们可以引入空对象模式,让我们的代码更加优雅。废话不多说,直接上代码!2.程序示例下面,我们以从图书图书馆获取图书为例。执行过程如下!首先创建一个抽象书类AbstractBook,代码如下:publicabstractclassAbstractBook{//书名protectedStringbookName;//判断是否存在publicabstractbooleanisExist();//获取书名publicabstractStringgetName();}然后,创建具体的实现类Book,如下:publicclassBookextendsAbstractBook{publicBook(StringbookName){this.bookName=bookName;}@OverridepublicbooleanisExist(){returnfalse;}@OverridepublicStringgetName(){returnbookName;}}接下来创建一个空对象NullObjectBook,如下:publicclassNullObjectBookextendsAbstractBook{@OverridepublicbooleanisExist(){returntrue;}@OverridepublicStringgetName(){return"No...";}}同时创建图书获取工厂BookFactory,如下:publicclassBookFactory{publicstaticfinalString[]names={"javacorevolume1","javacorevolume2","SoftwareCaprice","PythonIntroduction"};publicstaticAbstractBookgetBook(StringbookName){for(inti=0;ipossible=Optional.of(5);possible.isPresent();//returnstruepossible.get();//returns5还在jdk1.8中加入了Optional类来提高程序的健壮性!4.小结在写代码的时候,我们经常会遇到空指针。为了避免空指针的出现,我们需要做一些判断。如果是复杂的对象,需要逐层判断。巧妙的使用空对象模式可以返回无意义的对象,从而承担起处理null的责任,提高程序员的可读性!五、参考1、菜鸟教程-空对象模式