最近在接口開發(fā)過程中拴泌,發(fā)現(xiàn)對外接口的開發(fā)都需要添加入?yún)⒌目罩蹬袛喟吃常@么統(tǒng)計下來整個工程有很多代碼是在做空值判斷熙侍。所以就想專門整理下如何優(yōu)雅的處理空指針異常啸罢。
1. jdk關鍵類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行為的對象。空對象設計模式即描述了空對象的使用及它們的行為(或者它們的不足)同波。
- 使用
轉自易百教程
創(chuàng)建一個AbstractCustomer抽象類來定義一些操作鳄梅。這里的客戶名稱和擴展AbstractCustomer類的具體類。 創(chuàng)建工廠類CustomerFactory用來根據(jù)傳遞給它的客戶名稱返回RealCustomer或NullCustomer對象未檩。
- 抽象類AbstractCustomer
public abstract class AbstractCustomer {
protected String name;
public abstract boolean isNil();
public abstract String getName();
}
- 繼承類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;
}
}
- 工廠類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();
}
}