在下面的代码中,我的期望是方法readerList.size = 0
中的列表headerLine
,null
应该是commonValidation()
。但事实并非如此,任何人都能告诉我原因吗?
String[] headerLine = null;
if (readerList != null && readerList.size() != 0){
headerLine = readerList.get(0);
}
commonValidation(headerLine, logDTO, hrGroupName, feedFileName);
//方法定义
public void commonValidation(String[] headerLine, TransactionLogDTO logDTO, String hrGroupName, String filename) throws PersistenceException, ServiceException, Exception {
if ((headerLine == null) || (headerLine.length == 0)){
logDTO.setGyr("R");
String subject = MessageWrapper.getMessage("hr.mail.emptyfile.subject");
String body = MessageWrapper.getMessage("hr.mail.emptyfile.body", filename);
if (logDTO.getMessage() == null){
logDTO.setMessage(body);
}
else{
logDTO.setMessage(logDTO.getMessage() + ";" + body);
}
logDTO.setIsLogErrorMailSent(Boolean.TRUE);
sendTransactionLogErrorReport(hrGroupName, subject, body);
throw new Exception(body);
}
}
答案 0 :(得分:2)
String[] headerLine = null;
这是一个成员变量吗?如果是,则将其设为方法局部变量。
另外
您可以在ArrayList中添加null元素,并且可以增加大小。
ArrayList<String[]> arrayList = new ArrayList<String[]>();
arrayList.add(null);
System.out.println(arrayList.size());
将打印1
而不是0
。
因此,请检查readerList.get(0)
是否为null
以下是ArrayList
add
方法
410 public boolean add(E e) {
411 ensureCapacityInternal(size + 1); // Increments modCount!!
412 elementData[size++] = e;
413 return true;
414 }
如果您发现没有null
的检查,那么您必须自己完成:)
答案 1 :(得分:0)
但事实并非如此,(...)
我不相信。如果readerList.size() == 0
headerLine 未更改该值且仍为null
。