Java基础-熟悉的空指针

最近在接口开发过程中,发现对外接口的开发都需要添加入参的空值判断,这么统计下来整个工程有很多代码是在做空值判断。所以就想专门整理下如何优雅的处理空指针异常。

1. jdk关键类optional

跳转到上不错的介绍optional的文章

2. 空对象设计模式

  • 定义

转自维基百科
In object-oriented computer programming, a null object is an object with no referenced value or with defined neutral ("null") behavior. The null object design pattern describes the uses of such objects and their behavior (or lack thereof).

以上我的理解大致是,在面向对象的变成过程中,一个空对象就是一个没有赋值或者定义了返回值为null行为的对象。空对象设计模式即描述了空对象的使用及它们的行为(或者它们的不足)。

  • 使用
    转自易百教程
    创建一个AbstractCustomer抽象类来定义一些操作。这里的客户名称和扩展AbstractCustomer类的具体类。 创建工厂类CustomerFactory用来根据传递给它的客户名称返回RealCustomer或NullCustomer对象。
  1. 抽象类AbstractCustomer
public abstract class AbstractCustomer {
   protected String name;
   public abstract boolean isNil();
   public abstract String getName();
}
  1. 继承类RealCustomer和Java
    NullCustomer
public class RealCustomer extends AbstractCustomer {

   public RealCustomer(String name) {
      this.name = name;
   }

   @Override
   public String getName() {
      return name;
   }

   @Override
   public boolean isNil() {
      return false;
   }
}
public class NullCustomer extends AbstractCustomer {

   @Override
   public String getName() {
      return "Not Available in Customer Database";
   }

   @Override
   public boolean isNil() {
      return true;
   }
}
  1. 工厂类CustomerFactory
public class CustomerFactory {

   public static final String[] names = {"Rob", "Joe", "Julie"};

   public static AbstractCustomer getCustomer(String name){

      for (int i = 0; i < names.length; i++) {
         if (names[i].equalsIgnoreCase(name)){
            return new RealCustomer(name);
         }
      }
      return new NullCustomer();
   }
}

你可能感兴趣的:(Java基础-熟悉的空指针)