如果我只声明 2 个可变参数方法,如下所示:
public void foo(String... strings) {
System.out.println("Foo with Strings");
}
和
public void foo(int... ints) {
System.out.println("Foo with ints");
}
然后有代码:
foo();
由于预期的歧义,这是一个编译器错误。
但是,如果我只有以下 2 个版本的 foo:
public void foo(Object... objects) {
System.out.println("Foo with Objects");
}
和
public void foo(int... ints) {
System.out.println("Foo with ints");
}
然后代码
foo();
调用方法的 ints 版本。谁能解释为什么第二个示例不是同样模棱两可,以及为什么它解析为 int 方法而不是 Object 方法。谢谢。