<code><b>public</b> <b>void</b> add(<b>int</b>[] ints) { } <b>public</b> <b>void</b> add(<b>int</b>...intt) { }</code>
以上代碼是無法通過編譯的。
可變參數是jdk5的一個新特性,在此之前是通過數組來滿足需求的。是以可變參數可以接受一個相同類型的數組,但是數組類型的參數不能夠接受可變參數。
<code>@test <b>public</b> <b>void</b> test01() { <b>int</b>[] ints = {1, 3, 9, 20}; add2(ints); //這句代碼可以正确運作(可變參數接受數組) add2(1, 3, 9, 20); //這句代碼可以正确運作(可變參數接受可變參數) add(ints); //這句代碼可以正确運作(數組參數接受數組) add(1, 3, 9, 20); //這句代碼無法通過編譯(數組參數接受可變參數) } <b>public</b> <b>int</b> add(<b>int</b>[] ints) { <b>int</b> sum = 0; <b>for</b> (<b>int</b> anint : ints) { sum += anint; } <b>return</b> sum; } <b>public</b> <b>int</b> add2(<b>int</b>...intt) { <b>int</b> sum = 0; <b>for</b> (<b>int</b> anint : intt) { sum += anint; } <b>return</b> sum; }</code>
這個很容易就可以想明白。如果第一個參數是可變參數的話,那麼編譯器就要瘋了,因為它不知道到底哪個是第2個參數。
<code><b>public</b> <b>void</b> add(<b>int</b>...intt, string s) { }//這個方法無法通過編譯器的檢查。</code>