Methodenüberladung mit Nullargumenten verstehen
Das Überladen von Methoden mit ähnlichen Parametern kann bei der Übergabe von Nullargumenten zu Mehrdeutigkeiten führen. Dieses Problem tritt auf, wenn mehrere Methoden anwendbare Parameter haben, die mit dem Nullwert übereinstimmen.
Bedenken Sie den folgenden Java-Code:
public static void doSomething(Object obj) { System.out.println("Object called"); } public static void doSomething(char[] obj) { System.out.println("Array called"); } public static void doSomething(Integer obj) { System.out.println("Integer called"); }
Beim Versuch, doSomething(null) aufzurufen, stößt der Compiler auf eine mehrdeutige Fehlermeldung Methodenfehler. Dies liegt daran, dass sowohl die Object- als auch die char[]-Methode anwendbar sind und Java nicht bestimmen kann, welche aufgerufen werden soll.
Das Problem ergibt sich aus der Tatsache, dass Variablen jedes Referenztyps, einschließlich Object und char, null zugewiesen werden können [] und Ganzzahl. Da jede dieser Methoden einen kompatiblen Referenztyp akzeptiert, steht Java vor einem Dilemma bei der Identifizierung der spezifischsten anwendbaren Methode.
Um diese Mehrdeutigkeit aufzulösen, wird die spezifischste anwendbare Methode ausgewählt. In diesem Fall ist char[] spezifischer als Object, da es sich um einen Untertyp handelt. Wenn daher doSomething(null) ohne Angabe der Methode aufgerufen wird, wird die char[]-Version ausgewählt.
Wenn jedoch sowohl die char[]- als auch die Integer-Version verfügbar sind, wird die Situation schwieriger. Beide Methoden sind gleichermaßen spezifisch und Java kann nicht willkürlich eine der anderen vorziehen. In solchen Fällen ist eine explizite Umwandlung erforderlich, um die gewünschte Methode anzugeben.
Zum Beispiel:
doSomething((char[]) null); // Calls doSomething(char[])
Zusammenfassend lässt sich sagen, dass das Überladen von Methoden mit Nullargumenten zu Mehrdeutigkeiten führen kann, wenn mehrere anwendbare Methoden vorhanden sind . Die spezifischste Methode wird basierend auf den Parametertypen ausgewählt. Wenn es jedoch keinen klaren Gewinner gibt, ist eine explizite Umwandlung erforderlich, um den Konflikt zu lösen.
Das obige ist der detaillierte Inhalt vonWie geht Java mit Methodenüberladung mit Nullargumenten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!