[英]Java ternary (immediate if) evaluation
我無法找到規范的相關部分來回答這個問題。 在Java中的條件運算符語句中,是否評估了true和false參數?
因此,以下內容可能會拋出NullPointerException
Integer test = null;
test != null ? test.intValue() : 0;
既然你想要規范,這里是(來自§15.25條件運算符?: ,該節的最后一句):
未針對條件表達式的特定評估評估未選擇的操作數表達式。
我知道這是老帖子,但看看非常相似的情況,然后投票給我:P
回答原始問題:只評估一個操作數但是:
@Test
public void test()
{
Integer A = null;
Integer B = null;
Integer chosenInteger = A != null ? A.intValue() : B;
}
此測試將始終拋出NullPointerException
,在這種情況下,IF statemat不等同於?:operator。
原因在於http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.25 。 關於裝箱/拆箱的部分是卷入其中的,但是可以很容易地理解:
“如果第二個和第三個操作數之一是
boolean
類型,另一個類型是Boolean
類型,那么條件表達式的類型是boolean
。”
這同樣適用於Integer.intValue()
最好的祝福!
不,它不能。 這與以下相同:
Integer test = null;
if ( test != null ) {
test = test.intValue();
}
else {
test = 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.