有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中检查null的更好方法

我正在检查服务中的空值,该服务涉及如下数据库事务

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

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


共 (3) 个答案

  1. # 1 楼答案

    做两次if

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

    那怎么办

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

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

    但是,如果ID与批准的格式不匹配,则最好抛出IllegalArgumentException(因为这与没有有效ID条目的错误不同),您应该使用Pattern.compile将该模式保存为常量字段,而不是(1)在每次调用时重新编译它,(2)将其作为神奇常量隐藏在代码的深处