空指针访问警告

时间:2014-04-02 11:13:53

标签: java servlets

我制作的代码的一部分应该是这样的。

String name = request.getParameter("Name");
if(name!=null && !name.isEmpty())
{
    DO SOMETHING
}

但最终使用' ||'操作员而不是'&&'运营商。我在

处获得警告
  

命名 .isEmpty()

  

空指针访问:变量名在此位置只能为空。

有人可以解释一下为什么会这样吗?

顺便说一下,' 请求'是我从前一个类获得的HttpServletRequest对象。

4 个答案:

答案 0 :(得分:4)

name != null || !name.isEmpty()
  1. 如果name不为null,则永远不会检查第二个条件;
  2. 如果name为null,则检查第二个条件并抛出NullPointerException

答案 1 :(得分:2)

当你这样做时:

if(name!=null || !name.isEmpty())

然后,如果到达第二部分,由于Short-circuit evaluationnamenull

请注意false && anythingfalsetrue || anythingtrue

答案 2 :(得分:1)

你可以这样做:

String name = request.getParameter("Name") != null ? request.getParameter("Name") : "";

确保name不是null。然后

if (name.isEmpty()) { ... }

答案 3 :(得分:-1)

if(name!=null ){
   if(!name.isEmpty()){
       //body
   }
}