这是一个例子:
package com.demo;
public class PassArray {
static void vaTest(int... v){
System.out.println("no of args : "+v.length+"contents: ");
for (int x:v){
System.out.println(x+" ");
}
}
static void vaTest(boolean... v){
System.out.println("no of args : "+v.length+"contents: ");
for (boolean x:v){
System.out.println(x+" ");
}
}
public static void main(String args[]){
vaTest(1,2,3);
vaTest(true,false,true);
vaTest();//Error:Ambiguous!
}
}
谁能告诉我:
我有一些问题
1.为什么会出现歧义错误?
2.我有一个Varargs参数就像
int doIt(int a,int b,int c,int... vals)
为什么必须最后声明varargs?
解决方案如下:
由于调用vaTest();
有两种合法的方法调用,因此编译器无法确定要使用哪一种。
为了解决这个问题,您可以提供所选类型的空数组:
vaTest(new int[] {});
可以在
JLS 15.12.2.5. Choosing the Most Specific Method中获得更多信息。