在Java中检查null的更好方法

时间:2014-05-08 08:54:30

标签: java

我正在检查涉及数据库事务的服务的null值,如此

if(!id.matches("-?\\d+(\\.\\d+)?") || contactService.getContact(id) == null){ 
      throw new ResourceNotFoundException();
  }
Contact contact = contactService.getContact(id);

但是通过这种方式我调用了两次getContact服务并且它是应用程序的开销,任何更好的方法来检查null值,所以我只需要调用我的服务一次。

3 个答案:

答案 0 :(得分:4)

执行if两次

if(!id.matches("-?\\d+(\\.\\d+)?")){ 
      throw new ResourceNotFoundException();
  }
Contact contact = contactService.getContact(id);
if(contact == null){ 
      throw new ResourceNotFoundException();
  }

答案 1 :(得分:4)

Contact contact;

if(!id.matches("-?\\d+(\\.\\d+)?") || (contact = contactService.getContact(id)) == null){ 
    throw new ResourceNotFoundException();
}

但是,优选地,如果ID与批准的格式不匹配,则应该抛出IllegalArgumentException(因为这与没有有效ID的条目的情况不同),并且您应该使用{{1将该模式保存为常量字段而不是(1)在每次调用时重新编译它,以及(2)将其隐藏在你的颂歌深处的魔法常量中。

答案 2 :(得分:1)

怎么样?
Contact contact = contactService.getContact(id);
if(!id.matches("-?\\d+(\\.\\d+)?") || contact == null){ 
    throw new ResourceNotFoundException();
}