Product p = dao.checkProduct(pnumber);
ExpensiveProduct ep = dao.checkexpensiveProduct(pnumber);
if ((p.getNumber() == null)&&(ep.getNumber()==null) ){ // java.lang.NullPointerException
//do something
}else{
//do something
}
为什么这句话给出了java.lang.NullPointerException
我还有其他方法可以检查吗?
答案 0 :(得分:3)
此代码可以抛出NPE的唯一非平凡的可能性是pnumber
Integer
checkProduct()
或checkexpensiveProduct()
期望int
(或类似)。
其他琐碎的原因是dao
或p
为null
(易于检查)。
答案 1 :(得分:2)
试试这样:
if ((p != null) && (p.getNumber() == null) && (ep != null) && (ep.getNumber()==null) ){
答案 2 :(得分:1)
NullPointerException
对象的属性时,会出现 null
个(NPE)。
要检查null
,您可以在尝试使用它们之前打印变量的值,或者使用调试器逐步执行程序,并在到达行所在位置时检查变量的值是什么异常发生。
编辑:
关于你的评论
我需要检查p.getNumber()和ep.getNumber(),它们都返回null并获取该语句
现有代码
if ((p.getNumber() == null)&&(ep.getNumber()==null) )
已经这样做了。由于您在该行上获得了NPE,p
本身为null
,或ep
为null
,或两者兼而有之。您应该检查设置了checkProduct()
和checkexpensiveProduct()
的{{1}}和p
方法,看看它们是否正常工作。
答案 3 :(得分:1)
检查你的p变量和ep变量。其中一个是null.check 为什么
dao.checkProduct(pnumber)
或
dao.checkexpensiveProduct(pnumber);
返回null
答案 4 :(得分:0)
给NullPointerException
的是哪一行?请确保p
或ep
不为空。