Boolean condition;
public Boolean isCondition() { return condition; }
是那麼這種方法的以下使用不允許的,因爲有一種原始的,
if (isCondition())
{
//...
}
我會使用原語,但不知道關於班級。是否需要檢查空值?首先需要getBooleanValue()嗎?
Boolean condition;
public Boolean isCondition() { return condition; }
是那麼這種方法的以下使用不允許的,因爲有一種原始的,
if (isCondition())
{
//...
}
我會使用原語,但不知道關於班級。是否需要檢查空值?首先需要getBooleanValue()嗎?
是的,你可以使用任何盒裝基元(在你的情況下,Boolean
)作爲基元本身;即,如果您可以保證condition
被設置爲非空值,您的示例就可以工作。
這裏需要注意的是,如果任何盒裝原語本身在拆箱時都是null
,you will get a NullPointerException
。如果你有這個值的可能性是null
,你應該重新評估你爲什麼首先使用盒裝原語。改用拆箱原語(在你的情況下,boolean
)可能會更好。
是的,因爲它是一個引用類型,所以需要根據null
進行檢查。在if
條件下對原始類型boolean
進行的自動拆箱依賴於調用Boolean#booleanValue()
,如果condition
變量爲null
,則會引發NPE。
我發現了一個簡單的解決方案,
if(Boolean.TRUE.equals(isCondition())){ .. }
因爲表達的是在右邊這不會拋出NPE,我們仍然可以進行比較。
你可以做到這一點,但正如你傷心,你必須檢查爲空。更好地使用簡單類型。 –
由於「布爾」是一個類,它可以爲空。你可以返回一個'boolean',因爲它會被[autoboxed](https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html)。 – Turing85
謝謝圖靈85。你可能的意思是,你可以返回一個布爾值(大寫字母-B),因爲它會自動寫入布爾值(小寫)。 –