【问题标题】:Issue with NullPointerException in Java [duplicate]Java中的NullPointerException问题[重复]
【发布时间】:2019-04-16 09:31:54
【问题描述】:

我遇到了 NullPointerException 的问题。

我在调试,元素不为空,我在第一个 IF 中有问题,我看不出问题是什么。我认为当元素的状态为 null 时会发生这种情况,但我尝试修复它但它不起作用

// 更新:问题是当我检查状态时

for (Items item : master.getItems()) {
try {
    if (item.getCompany_status().equals("active") || item.getCompany_status().equals("open")) {

if (item.getAddress_snippet() == null) {
    cont2++;
    Company c = new Company(item.getTitle(), "");                            
    arrayCompany.add(c);
}else {
    cont2++;
    Company c = new Company(item.getTitle(), item.getAddress_snippet());                                 
    arrayCompany.add(c);
}
} catch (Exception e) {
     e.printStackTrace();
}
}
}

【问题讨论】:

  • item.getAddress_snippet().equals(null) 几乎肯定是错误的。使用==null 进行比较
  • 如果item.getAddress_snippet().equals(null) 中的getAddress_snippet() 返回null,调用.equals() 将不起作用,因为null 不是具有方法的对象。你需要写item.getAddress_snippet() == null
  • 这是一个 NPE,所以你错过了实际变量为空。通过minimal reproducible example 或至少是堆栈跟踪,我们可以确认您错过了什么。请edit您的问题与信息。仅供参考,您可以从Object.equals 阅读“对于任何非空引用值 x,x.equals(null) 应返回 false。

标签: java json nullpointerexception


【解决方案1】:

我强烈建议以另一种方式进行等于:

代替:

item.getCompany_status().equals("active")

做:

"active".equals(item.getCompany_status())

这样,在运行时,如果状态为空,它不会因为它首先检查字符串而崩溃。

"value".equals(null)null.equals("value") 更有可能是因为你不能从空对象调用 .equals()

【讨论】:

  • 非常感谢,我已经解决了这个问题,但问题出在第一个 IF (item.getCompany_Status())
  • @R.Sanchez 检查我的编辑!
  • 非常感谢!!!!这解决了我的问题!!!!
  • @R.Sanchez 很高兴它对您有所帮助,祝您有美好的一天!
【解决方案2】:

这是强类型,所以 tem.getCompany_status() 是 null ,它给出空指针异常,

item.getCompany_status().equals("active") || 
item.getCompany_status().equals("open")

所以,使用

"active".equals(item.getCompany_status()) || 
"open".equals(item.getCompany_status())

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2014-08-10
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多