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)了。
相关文章
相关标签/搜索