gpt4 book ai didi

java - 神秘的 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 07:54:11 25 4
gpt4 key购买 nike

我有以下代码。它工作正常。没有异常(exception)等。我循环遍历使用标准查询检索的 JPA 实体对象列表(因此列表中没有任何 null 对象)。

for (PeriodicalTable periodical : resultsP){
stringFor.add(periodical.getReference());
site = em.find(SiteTable.class, periodical.getSiteID());
if (site != null && site.getPostcode() != null && !site.getPostcode().equals("")){
tempString = site.getPostcode().replaceAll("\\s+", " ");
periodical.setPostcode(tempString.trim());
}
}

现在,我添加了一个 if 语句,这样只有当被循环列表中的对象的 contractManagerID0< 时才会触发一行。标记如下;

for (PeriodicalTable periodical : resultsP){
if(periodical.getContractManagerID()==0) //<---- HERE!!!!
{
stringFor.add(periodical.getReference());
}
site = em.find(SiteTable.class, periodical.getSiteID());
if (site != null && site.getPostcode() != null && !site.getPostcode().equals("")){
tempString = site.getPostcode().replaceAll("\\s+", " ");
periodical.setPostcode(tempString.trim());
}
}

经过一些调试后,我将异常隔离为来自 if 语句本身(标记为“HERE”),但我不明白这是怎么回事。我们知道列表中没有 null 对象,否则即使没有 if 语句它也无法工作,但没有它它也能正常工作。我完全迷路了。

最佳答案

此处唯一的可能性是periodical.getContractManagerID() 返回null

比较 null == 0 会给你一个 NullPointerException

改为这样做:

if (periodical.getContractManagerID() == null || 
periodical.getContractManagerID() == 0)

关于java - 神秘的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18976534/

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