解释和修复可能的空指针取消引用

Ara*_*ram 7 java findbugs pmd

代码审查工具抱怨saveSafeScan中可能的空指针取消引用safeScanWarnings(...)if(safeScanWarnings!= Null&safeScanWarnings.size()> 0)

我想知道这怎么可能?这是因为我们通过引用返回集合吗?

protected void saveSafeScan(final Response response, final Dtec dtec) throws dtecException
    {
        Collection<String> safeScanWarnings = dtec.getSafeScanWarnings();
        if (safeScanWarnings!=null && safeScanWarnings.size()>0)
        {
            Iterator<String> iterator = safeScanWarnings.iterator();

            int i = 0;
            while (iterator.hasNext())
            {
                String safeScanCode = iterator.next();
                if (i == 0)
                {
                    response.setSafeScanCode(safeScanCode);
                    response.setSafeScanCodeText(getMessage(String.format("DTECRESPONSE_SAFESCANCODE_%s",
                            StringUtils.trimToEmpty(safeScanCode))));
                }
                SafeScanWarning safeScan = new SafeScanWarning();
                safeScan.setCode(safeScanCode);
                safeScan.setMessage(String.format("DTECRESPONSE_SAFESCANCODE_%s", StringUtils.trimToEmpty(safeScanCode)));
                safeScan.setPriority(i);
                response.getSafeScanWarnings().add(safeScan);
                i++;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 11

如果它真的指向那一行,那对我来说,它看起来像代码审查工具中的一个错误.

由于它是一个局部变量,因此无法通过无效检查和size()调用之间的任何其他方式进行更改- 因此它无法抛出一个NullPointerException.