Varargs方法中的重载

时间:2014-12-29 22:49:37

标签: java overloading variadic-functions

public class OverloadingVarargsMethodWithNormalMethod {

     static void a(int... c){
         System.out.println(c.length);
         for(int array:c){
            System.out.println(array);
         }
     }  

    static void a(int d,int e,int f){  
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
    }

    public static void main(String[] args) {
         a(1,2,3);
    }
}

我预计会出现一个模棱两可的错误。但是,代码运行第二个“a”方法。为什么?两种方法适用于(1,2,3)?

1 个答案:

答案 0 :(得分:3)

将调用最具体的函数定义。 int a, int b, int cint... c更具体。

出于同样的原因,以下内容有效

static void foo(String a) {

}
static void foo(Object a) {

}

并且第一个将被调用foo("bar");

进一步阅读:https://blogs.oracle.com/mcimadamore/entry/testing_overload_resolution

相关问题