varargs和歧义的概念?

3 java compiler-errors ambiguity variadic-functions java-5

这是一个例子:

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!
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我:

我有一些问题

1.为什么会出现模棱两可的错误?

2.i有一个Varargs参数就好

int doIt(int a,int b,int c,int... vals)
Run Code Online (Sandbox Code Playgroud)

为什么必须最后声明varargs?

  1. 什么是varargs和歧义?

Kep*_*pil 5

由于调用有两个合法的方法调用vaTest();,编译器无法确定使用哪一个.
为了帮助它,您可以提供所选类型的空数组:

vaTest(new int[] {});
Run Code Online (Sandbox Code Playgroud)

更多信息可在JLS 15.12.2.5中找到.选择最具体的方法.