Java Optional空指針處理

那些年困擾着咱們的null

在Java江湖流傳着這樣一個傳說:直到真正瞭解了空指針異常,才能算一名合格的Java開發人員。在咱們逼格閃閃的java碼字符生涯中,天天都會遇到各類null的處理,像下面這樣的代碼可能咱們天天都在反覆編寫:java

if(null != obj1){
  if(null != obje2){
     // do something
  }
}

稍微有點眼界javaer就去幹一些稍有逼格的事,弄一個判斷null的方法:spa

boolean checkNotNull(Object obj){
  return null == obj ? false : true;
}

void do(){
  if(checkNotNull(obj1)){
     if(checkNotNull(obj2)){
        //do something
     }
  }
}

而後,問題又來了:若是一個null表示一個空字符串,那""表示什麼?指針

而後慣性思惟告訴咱們,""和null不都是空字符串碼?索性就把判斷空值升級了一下:code

boolean checkNotBlank(Object obj){
  return null != obj && !"".equals(obj) ? true : false;
}
void do(){
  if(checkNotBlank(obj1)){
     if(checkNotNull(obj2)){
        //do something
     }
  }
}

有空的話各位能夠看看目前項目中或者本身過往的代碼,到底寫了多少和上面相似的代碼。內存

不知道你是否定真思考過一個問題:一個null到底意味着什麼?開發

  1. 淺顯的認識——null固然表示「值不存在」。
  2. 對內存管理有點經驗的理解——null表示內存沒有被分配,指針指向了一個空地址。
  3. 稍微透徹點的認識——null可能表示某個地方處理有問題了,也可能表示某個值不存在。
  4. 被虐千萬次的認識——哎喲,又一個NullPointerException異常,看來我得加一個if(null != value)了。
相關文章
相關標籤/搜索