Merkwürdiges Java-Null-Verhalten beim Überladen von Methoden [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Welche Überladung wird in Java für null ausgewählt? 3 Antworten

Ich habe den folgenden Codeausschnitt:

public static void foo(Object x) {
    System.out.println("Obj");
}
public static void foo(String x) {
    System.out.println("Str");
}

Wenn ich anrufefoo(null) warum gibt es keine mehrdeutigkeit? Warum ruft das Programm auf?foo(String x) anstattfoo(Object x)?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage