我有點困惑:我有一個函數,它將一個對象作爲參數。但編譯器不會抱怨,如果我只是傳遞一個基元,甚至可以將布爾基元識別爲布爾對象。爲什麼?java:布爾instanceOf布爾?
public String test(Object value)
{
if (! (value instanceof Boolean)) return "invalid";
if (((Boolean) value).booleanValue() == true) return "yes";
if (((Boolean) value).booleanValue() == false) return "no";
return "dunno";
}
String result = test(true); // will result in "yes"
注意一個布爾值從來不是布爾的一個實例。你永遠不能將一個原語傳遞給instanceof操作符。你的布爾原語從來沒有進入這個方法,當調用發生和方法調用轉換髮生時,會發生裝箱! – Mishax 2013-03-19 06:10:52