1、变长参数只能放在最后。
2、如果出现重载情况,应该注意模糊性。
例如:
class VarArgs {
static void vaTest(int ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");
for(int x : v){
System.out.print(x+" ");
}
System.out.println();
}
static void vaTest(boolean ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");
for(boolean x : v){
System.out.print(x+" ");
}
System.out.println();
}
static void vaTest(String msg,int ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");
for(int x : v){
System.out.print(x+" ");
}
System.out.println();
}
}
这种情况下是不会出现异常的,但是下面的情况就会出现编译时错误了:
class VarArgs4 {
static void vaTest(int ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");
for(int x : v){
System.out.print(x+" ");
}
System.out.println();
}
static void vaTest(boolean ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");
forboolean x : v){
System.out.print(x+" ");
}
System.out.println();
}
}
对于varArgs4的重载是完全正确的,但是去编译不通过:
vaTest();//Error:Ambiguous!