0

在下面的代码中,我的期望是如果 list readerList.size = 0headerLine应该null在 method 内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);
    }
}
4

2 回答 2

2

String[] headerLine = null;这是一个成员变量吗?如果是,则使其成为方法局部变量。

您可以在 ArrayList 中添加空元素并增加大小。

    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所以你必须自己做:)

于 2012-09-04T09:25:35.567 回答
0

但这种情况并非如此, (...)

我不相信。如果readerList.size() == 0 headerLine不更改值并保持null.

于 2012-09-04T09:40:34.000 回答