2015-10-19 155 views

回答

2

JLS 15.20.2。鍵入比較運算符instanceof

如果RelationalExpression引用類型鑄造(§15.16)將被拒絕作爲一個編譯時間錯誤,那麼instanceof關係式同樣產生一個編譯時間錯誤。

凡使用instanceof

if (RelationalExpression instanceof ReferenceType) 

由於IntegerInteger[]之間的類型轉換失敗,因爲無論是其他的亞型(他們共同的超類型是Object),instanceof給人一種併發症錯誤

不兼容的條件操作數類型Integer []和Integer。

+0

非常感謝!正是我想知道的! – agurylev

3

Integer[]Integer不一樣。他們是兩個完全不同的類:你可以通過檢查Integer[].class == Integer.class來看到這一點,這將產生false

這應該不會令人驚訝:一個是數組類型,另一個不是。您可以在Integer上調用Integer.intValue(),在Integer[]上調用Integer[].length,但不調用Integer.lengthInteger[].intValue()

此外,這兩個類別中唯一的共同超類型是Object,所以Integer參考無法存儲Integer[],反之亦然。

+0

非常感謝您的回答。我知道,Integer []與Integer並不相同。但我誤解了「instanceof」的工作原理。現在對我來說很清楚! – agurylev

相關問題