小编kun*_*ard的帖子

Java方法重载和varargs

我试图理解方法重载,我有这些方法.

public void method(int a){
    System.out.println("int a");
}

//implementing interface method
@Override
public void method() {
    System.out.println("interface");
}

//varargs
public void method(int ... a){
    System.out.println("int ... a");
}
Run Code Online (Sandbox Code Playgroud)

用这些参数调用它们之后,

int[] a = new int[5];
stack.method();
stack.method(1);
stack.method(5,6);
stack.method(null);
stack.method(a);
Run Code Online (Sandbox Code Playgroud)

我有这些结果:

interface
int a
int ... a
int ... a
int ... a

据我所知,该程序不应该编译,因为模糊不清,但无论如何它都可以.编译器不应该抛出错误吗?

java overloading compiler-errors variadic-functions ambiguous

6
推荐指数
2
解决办法
424
查看次数