gpt4 book ai didi

java - 将数组初始化为 null 但 null 比较失败

转载 作者:行者123 更新时间:2023-12-02 07:35:43 31 4
gpt4 key购买 nike

在下面的代码中,我的期望是 if list 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);
}
}

最佳答案

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,那么您必须自己检查:)

关于java - 将数组初始化为 null 但 null 比较失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12260324/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com