0
假設此代碼:尷尬VAR-args參數
public class Test{
public static void main(String[] args) {
Test.testInt(new int[]{2,3});
Test.testInteger(new Integer[]{2,3});
}
public static void testInt(Object... elements){
System.out.println(elements[0] instanceof int[]);
}
public static void testInteger(Object... elements){
System.out.println(elements[0] instanceof Integer);
}
}
在兩種情況下,一個期望具有含有2和3 一個一維陣列所以預期輸出應爲第一眼:
false
true
驚喜!真正的輸出是:
true
true
更新這個帖子:
其實,這不是一個很好的問題,因爲我還沒有意識到,這起案件是按照VAR-ARGS規則。總而言之,即使Var-args是參數,int []數組也不能自動寫入到Integer []中;沒有特殊的待遇。
謝謝,我知道,我不是很清楚,我已經更新了這篇文章。 – Mik378
我完全同意你的觀點,但這並沒有回答我的問題:)我的問題是:爲什麼Java在傳遞給var-args參數時讓原始數組創建了二維數組? – Mik378
已更新。見第三段。 –