簡體   English   中英

NullPointerException在空檢查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()

如果check1nullcheck2null ,則第一條語句的值為true 當您移至第二條語句時會發生問題,因為check2nullcheck2.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM