处理Null为bigdecimal

时间:2013-04-19 15:18:43

标签: java nullpointerexception bigdecimal

我的代码如下所示,

caseX caseXObj = caseXBo.getCaseXDao().findCaseXBySID(selectedID);

if(caseXObj != null && caseXObj.getCaseInGrossAmt() != null){

} else {
    caseXObj.setCaseAmt(BigDecimal.ZERO);
}

我已经处理了caseX的NUll指针以及getter,当null时,将bigdeciaml设置为默认的ZERO值。我仍然在设置行中得到Null指针异常。有什么建议吗?

3 个答案:

答案 0 :(得分:4)

caseXObj很可能null,因此它会导致NullPointerException。您应该测试这三种情况:

caseX caseXObj = caseXBo.getCaseXDao().findCaseXBySID(selectedID);
if (caseXObj != null && caseXObj.getCaseInGrossAmt() != null) {
    // do something with caseXObj 
} else if (caseXObj == null) {
    // initialize caseXObj, you were misssing this case!
} else {
    caseXObj.setCaseAmt(BigDecimal.ZERO);
}

实质上,错误在于您只测试了两种情况 - 其中有三种情况。

答案 1 :(得分:0)

假设getCaseXDao()返回null是正常的,则需要分配给caseXObj,而不是将其用作else子句中的指针。

答案 2 :(得分:0)

那是因为你没有在你的其他部分检查null。

应该是:

caseX caseXObj = caseXBo.getCaseXDao().findCaseXBySID(selectedID);

if(caseXObj != null && caseXObj.getCaseInGrossAmt() != null)
{
//...
}
else
{
  if (caseXObj != null)
  {
    caseXObj.setCaseAmt(BigDecimal.ZERO);
  }
}