Mã được phàn nàn thể rỗng trỏ dereference của safeScanWarnings trong saveSafeScan (...) Tại dòng if (safeScanWarnings! = Null & safeScanWarnings.size()> 0)Giải thích và sửa chữa cho có thể dereference con trỏ null của
Tôi tự hỏi làm thế nào điều này có thể? Đây có phải là vì chúng tôi đang trả lại bộ sưu tập bằng cách tham chiếu không?
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++;
}
}
}
Trong khi trong ví dụ của bạn mã là đúng do lỗi của bạn nếu có một '&' và không '&& '. Vì vậy, hãy chắc chắn rằng trong mã thực sự đó là đánh giá shortcircuit. Nếu đó là trường hợp đó là một lỗi trong công cụ. – Voo
nhận thấy nhận xét của bạn ở trên mẫu mã là 'if (safeScanWarnings! = Null & safeScanWarnings.size()> 0)' đó là sai (lỗi) – MeBigFatGuy