我试图理解方法重载,我有这些方法.
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