我的代码如下所示,
caseX caseXObj = caseXBo.getCaseXDao().findCaseXBySID(selectedID);
if(caseXObj != null && caseXObj.getCaseInGrossAmt() != null){
} else {
caseXObj.setCaseAmt(BigDecimal.ZERO);
}
我已经为 caseX 和 getter 处理了 NUll 指针,当 null 将 bigdeciaml 设置为默认零值时。我仍然在 setter 行中得到空指针异常。有什么建议吗?
最佳答案
很有可能 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);
}
从本质上讲,错误是您只测试了两种情况 - 而实际上是三种情况。
关于java - 为 bigdecimal 处理 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107965/