請參見下面的代碼 -數組是否真的是對象?
class test {
public static void main(String args[]){
int[] somearray = {1, 2};
printarray(somearray);
}
static void printarray(Object[] array){
System.out.println(array[0]);
}
}
上面的代碼不會編譯由於printarray
方法不能接受原始陣列。 或者這是一個自動裝箱的限制?如果是這樣,那麼我認爲這是一個很大的限制。
數組* *是一個對象,但是一個基元數組與對象數組不兼容,因爲基元不是對象,並且自動裝箱無法處理該轉換。 – JonK
「由於printarray方法不能接受原始數組,因此上面的代碼將無法編譯。」 - 不,代碼不會編譯,因爲您沒有爲'args'指定類型。將其更改爲'String [] args'並且編譯好。請將其編輯爲您希望我們考慮的* actual *代碼,這會產生您感興趣的錯誤消息。 –
@JonSkeet即使修改了主方法簽名,它也沒有在1.6.0_45上爲我編譯,是這東西現在在1.7/1.8? – JonK