Java getParameterValues(fieldName)返回null并引发异常

Java getParameterValues(fieldName)返回null并引发异常,java,servlets,nullpointerexception,Java,Servlets,Nullpointerexception,我想获取参数值,有时我不发送它们,它会返回我null 没关系。但是当我对返回字符串数组执行检查时,servlet抛出一个java.lang.NullPointerException if(null!=values && values.length>0) 当它为空时,我什么也不做。(继续流动) 应该是 if(null!=values && values.length>0) 因为,如果您的值为null(计算为false),语句中的或条件将执行或的另一部

我想获取参数值,有时我不发送它们,它会返回我
null
没关系。但是当我对返回字符串数组执行检查时,servlet抛出一个
java.lang.NullPointerException

if(null!=values && values.length>0)
当它为空时,我什么也不做。(继续流动)

应该是

if(null!=values && values.length>0)
因为,如果您的值为
null
(计算为
false
),语句中的
条件将执行
的另一部分,这将抛出
NPE


如果您在那里给出一个
&&
,当它在
null处遇到
false
时,它将返回语句求值=中的值

不同于如果
为空,则不会进行下一次检查

if(null!=values && values.length>0) // change to and 
 {
         Collections.addAll(strlist, values);
 }

另请参考

应该使用AND&&运算符来测试两个条件是否都满足,这是您在实例中需要的

if (null != values && values.length > 0)

&&
|
遵循短路评估

也就是说,如果不需要,这些操作符将不会执行右侧表达式

对于
&&
运算符,如果在LHS处
为false
,则不会执行下一个表达式
对于
|
运算符,如果在LHS处
true
,则它不会执行下一个表达式

因此,对于您的条件检查,它需要执行
&
操作以避免
NullPointerException

if(null!=values && values.length>0)

为什么,我要检查什么,这个还是那个condition@user63898如果您使用OR进行检查,那么尽管
为空,您仍然会执行
值.length
,这将抛出NPE。如果您有
&
,如果
为空,则不会检查第二部分,因为
为假&&不管什么
总是假。您不能这样做。如果你这样做,那么你一定会得到这个例外!如果值为
null
null.length
将为您提供
NPE