Methode Überladen und Null Parameterauswahl
In Java, wenn eine Methode überlastet ist, existieren mehrere Methoden mit dem gleichen Namen, aber unterschiedlichen Parameterlisten. Wenn ein Methodenaufruf durchgeführt wird, bestimmt der Compiler, welche überlastete Methode basierend auf der Nummer und den Typen der tatsächlichen Argumente übergeben werden soll. public void -Methode (Objekt O) { System.out.println ("Objektverion"); } public void -Methode (String s) { System.out.println ("String -Version"); } public static void main (String args []) { MoneyCalc Frage = new MoneyCalc (); Frage.Method (null); } }
Frage:
public class MoneyCalc { public void method(Object o) { System.out.println("Object Verion"); } public void method(String s) { System.out.println("String Version"); } public static void main(String args[]) { MoneyCalc question = new MoneyCalc(); question.method(null); } }
Wenn der Methode -Aufruf mit Null als Argument erfolgt, wählt der Kompiler die Methode (String) -Version, da es spezifischer als die Methode (Objekt) Version ist. Gemäß der Java-Sprachspezifikation (JLS) wird die spezifischste Überlastung anhand ihrer Anwendbarkeit und Spezifität ausgewählt. In diesem Fall ist NULL für beide Methoden anwendbar, da es Variablen sowohl von Objekt- als auch Zeichenfolgentypen zugewiesen werden kann. Spezifität misst, wie spezialisiert die Methode für die angegebenen Argumente ist. In diesem Fall ist die Methode (String) -Plastung spezifischer, da sie nur für Argumente von Typ String umgehen soll. Die Methode (Objekt) Überladung ist allgemeiner, da sie Argumente des Typs von Typen oder einer seiner Unterklassen verarbeiten kann.
Daher wählt der Compiler die Methode (String) -Version aus, da sie spezifischer und anwendbarer für das angegebene Argument ist. MoneyCalc -Klasse, ein Kompilierungsfehler würde auftreten. Dies liegt daran, dass weder Methoden (String) noch Methode (StringBuffer) in diesem Fall spezifischer als das andere sind, was zu einer Unklarheit bei der Methodenauswahl führt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3