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
。