您现在的位置是:亿华云 > 域名

如何优雅的解决空指针?

亿华云2025-10-03 18:14:20【域名】9人已围观

简介一、介绍在实际的系统运行过程中,难免会出现报NullPointerException空指针的错误,造成这样的本质原因就是数据或者对象为空,导致程序进一步执行的时候报错!一般的常规解决办法也就是加一个i

一、何优介绍

在实际的解决系统运行过程中,难免会出现报NullPointerException空指针的何优错误,造成这样的解决本质原因就是数据或者对象为空,导致程序进一步执行的何优时候报错!

一般的常规解决办法也就是加一个if判断。

if(obj != null){    //doSomthing } 

如果出现需要判断的解决对象过多,难以避免的何优会出现很多对Null的判断语句,而这些语句一旦多起来,解决我们的何优代码就会变的惨不忍睹。

针对这种情况,解决我们可以引入了空对象模式以此来使我们的云服务器何优代码变的更优雅一点。

废话也不多说了,解决代码直接撸起来!

二、何优程序示例

下面,解决我们以获取从一个书籍库中获取书籍为例,何优实现过程如下!

先创建一个书籍抽象类AbstractBook,代码如下:

public abstract class AbstractBook {      //书名     protected String bookName;     //判断是否存在     public abstract boolean isExist();     //获取书名     public abstract String getName(); } 

然后,创建一个具体实现类Book,如下:

public class Book extends AbstractBook {      public Book(String bookName) {          this.bookName = bookName;     }     @Override     public boolean isExist() {          return false;     }     @Override     public String getName() {          return bookName;     } } 

接着,创建一个空对象NullObjectBook,如下:

public class NullObjectBook extends AbstractBook {      @Override     public boolean isExist() {          return true;     }     @Override     public String getName() {          return "没有...";     } } 

同时,创建一个书籍获取工厂BookFactory,如下:

public class BookFactory {      public static final String[] names = { "java核心卷1", "java核心卷2", "软件随想录", "python入门"};     public static AbstractBook getBook(String bookName){          for (int i = 0; i < names.length; i++) {              if(names[i].equals(bookName)){                  return new Book(bookName);             }         }         return new NullObjectBook();     } } 

最后,编写一个测试客户端,如下:

public class NullObjectClient {      public static void main(String[] args) {          AbstractBook book1 = BookFactory.getBook("java核心卷2");         AbstractBook book2 = BookFactory.getBook("python入门");         AbstractBook book3 = BookFactory.getBook("java编程思想");         AbstractBook book4 = BookFactory.getBook("软件随想录");         System.out.println(book1.getName());         System.out.println(book2.getName());         System.out.println(book3.getName());         System.out.println(book4.getName());     } } 

输出结果:

java核心卷2 python入门 没有... 软件随想录 

从代码上可以看出,实现过程比较简单!

三、应用

空对象模式在编程中应用也很广,例如 google 的 guava 库提供了Optional类,可以有效的服务器租用判断null对象。

ptional<Integer> possible = Optional.of(5); possible.isPresent(); // returns true possible.get(); // returns 5 

在 jdk1.8 中也新增了Optional类,以提高程序的健壮性!

四、总结

在写代码的时候我们经常会遇到空指针,为了避免空指针的发生需要做一些判断。如果是复杂对象的话,还需要一层层地去判断。

巧妙的采用使用空对象模式,可以用于返回无意义的对象,从而承担处理null的责任,提升程序员的可读性!

五、参考

1、菜鸟教程 - 空对象模式

网站模板

很赞哦!(49473)