Wenn ich erklären, nur die 2 varargs Methoden wie folgt:In Java, warum ist der Aufruf foo() nicht zweideutig angesichts 2 Varags Methoden foo (int ... ints) und foo (Object ... Objekte)?
public void foo(String... strings) {
System.out.println("Foo with Strings");
}
und
public void foo(int... ints) {
System.out.println("Foo with ints");
}
und dann den Code haben:
foo();
dies aufgrund der Mehrdeutigkeit einen Compiler-Fehler ist wie erwartet.
Allerdings, wenn ich nur die folgenden zwei Versionen von foo haben:
public void foo(Object... objects) {
System.out.println("Foo with Objects");
}
und
public void foo(int... ints) {
System.out.println("Foo with ints");
}
dann der Code
foo();
ruft die Ints Version des Verfahrens. Kann jemand erklären, warum das zweite Beispiel nicht ähnlich mehrdeutig ist und warum es über die Object-Methode in die int-Methode aufgelöst wird? Vielen Dank.
Sie haben die Anrufe an foo nicht angezeigt, ohne die diese Frage schwer zu beantworten ist. –
Jon, der Aufruf von foo() ist wörtlich foo(), d. H. Mit null Argumenten. Ich werde die Frage bearbeiten, um dies klarer zu machen. – mikej
Mit * nur * int ... und Objekt ..., das kompiliert für mich. Mit String ... und int ... (aber nicht Object ...) tut es nicht. Können Sie die Frage bitte überprüfen? –