-1
我有這個代碼的問題。Java可變參數混淆?
class A{}
class B extends A{}
public class TestExms {
static String s="-";
public static void main(String[] args) {
A[] aa = new A[2];
B[] ba = new B[2];
sifter(aa);
sifter(ba);
sifter(7);
System.out.println(s);
}
static void sifter(A[]... a2){s+="1";}
static void sifter(B[]... b1){s+="2";}
static void sifter(B[] b1){s+="3";}
static void sifter(Object o){s+="4";}
}
當我運行這個代碼輸出將是「-434」。 問題是爲什麼: 這個A[] aa = new A[2];
當傳遞到sifter(aa);
這個劑量不叫static void sifter(A[]... a2){s+="1";}
。它會調用這個方法static void sifter(Object o){s+="4";}
有人可以解釋我這個嗎? 在(A[]... a2)
裏面發生了什麼?
*您在可變參數中給出了錯誤的語法*沒有真正值得注意的是,當您從程序'sifter(aa)中移除方法'sifter(Object o)'時''調用方法'sifter A [] .. aa);' –