![](/img/trans.png)
[英]Sonarqube shows NullPointerException bug even after null check is present in Java
[英]NullPointerException occuring after null check java
我有這個if語句
if((check1==null||!check1.isSolid())&&(check2==null)||!check2.isSolid())
它拋出一個空指針異常,因為check1或check2為null,但是我不明白為什么這樣做,因為我在訪問該對象之前正在檢查null條件,並且如果該對象為null為什么Java會麻煩檢查isSolid,因為它本來應該是真實的。
您搞砸了您的括號。 Java會將您的語句組合在一起,如下所示:
((check1 == null || !check1.isSolid()) && check2 == null) || !check2.isSolid()
如果check1
為null
而check2
為null
,則第一條語句的值為true
。 當您移至第二條語句時會發生問題,因為check2
為null
, check2.isSolid()
將通過NullPointerException
。
將您的括號更改為
(check1 == null || !check1.isSolid()) && (check2 == null || !check2.isSolid())
您弄混了括號。 嘗試:
if((check1==null||!check1.isSolid())&&(check2==null||!check2.isSolid()))
嘗試這個:
boolean check1_result = (check1 == null) ? true : !check1.isSolid();
boolean check2_result = (check2 == null) ? true : !check2.isSolid();
if (check1_result && check2_result)
// do work...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.