繁体   English   中英

在Java中检查null的更好方法

[英]Better way to check for null in Java

我正在从涉及这样的数据库事务的服务中检查空值

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

但是通过这种方式,我要两次调用getContact服务,这对于应用程序来说是开销,这是检查空值的更好方法,因此我只需要调用一次服务即可。

if两次

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

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

不过,最好是,如果ID与批准的格式不匹配,则应该抛出IllegalArgumentException ,这是因为与没有有效ID的条目相比,这是一个不同的错误),并且应该使用Pattern.compile将该模式保存为常量字段,而不是(1)在每次调用时重新编译它,以及(2)将其隐藏为颂歌内部的魔术常数。

关于什么

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM