2016-09-28 53 views
1

爲什麼下面的代碼給出編譯錯誤「方法show(Object [])對於VarArgs」?類型是不明確的?Object vararg和int vararg編譯錯誤

行顯示錯誤(10,20,30);

public class VarArgs { 
    public static void main(String[] args) { 
     show(10,20,30); 
    } 

    private static void show(Object... args){ 
     System.out.println("Object"); 
    } 

    private static void show(int... arry){ 
     System.out.println("Integer"); 
    } 
} 

JDK:jdk1.6.0_23

+0

謝謝Tunaki。不確定它是否重複,因爲那裏的重載是用int vararg和Integer vaarg。展示(10,20,30)時,爲什麼會出現混淆?另一方面private static void show(Integer ... arry)工作.. –

回答

1

應該首先閱讀this,然後再通過一個int陣列,而不是在顯示方法3個整數。

這裏發生的事情是Java編譯器自動將int整型爲Integer類,因爲Integer類是Object類的一個子類show()方法的兩個版本都可以接受show(int []),因此編譯器會拋出模糊的錯誤。

+0

show(int [])不能顯示(10,20,30)。另外,如果我將第二種方法更改爲私有靜態無效顯示(整數...阿里),它的工作原理。 –

+0

我認爲你誤解了,由show(int [])我的意思是調用顯示方法與int數組,因爲它的參數。 – nitinsh99

+0

對於可變參數,show(10,20,30)是一個數組傳遞的,對嗎?我認爲,第二種方法是裝盒整數,然後擴大到對象。但不知道。 –