In Java kommt es häufig vor, dass Methoden überladen werden. Unten finden Sie ein interessantes Java-Programm.
CSV-Datei in Java lesenJava
public class Test { // Overloaded methods public void fun(Integer i) { System.out.println("fun(Integer ) "); } public void fun(String name) { System.out.println("fun(String ) "); } // Driver code public static void main(String [] args) { Test mv = new Test(); // This line causes error mv.fun(null); } }
Ausgabe :
22: error: reference to fun is ambiguous mv.fun(null); ^ both method fun(Integer) in Test and method fun(String) in Test match 1 error
Der Grund, warum im obigen Szenario ein Fehler bei der Kompilierung auftritt, liegt darin, dass die Methodenargumente „Integer“ und „String“ in Java keine primitiven Datentypen sind. Das bedeutet, dass sie Nullwerte akzeptieren. Wenn wir einen Nullwert an Methode1 übergeben, ist der Compiler verwirrt, welche Methode er auswählen muss, da beide den Nullwert akzeptieren. Dieser Fehler bei der Kompilierung würde nicht auftreten, es sei denn, wir übergeben absichtlich einen Nullwert. Sehen Sie sich zum Beispiel das folgende Szenario an, das wir beim Codieren im Allgemeinen befolgen.
Float zum StringJava
public class Test { // Overloaded methods public void fun(Integer i) { System.out.println("fun(Integer ) "); } public void fun(String name) { System.out.println("fun(String ) "); } // Driver code public static void main(String [] args) { Test mv = new Test(); Integer arg = null; // No compiler error mv.fun(arg); } }
Ausgabe :
fun(Integer )
Wenn im obigen Szenario der Wert „arg“ aufgrund des Ergebnisses des Ausdrucks null ist, wird der Nullwert an Methode1 übergeben. Hier erhalten wir keinen Fehler bei der Kompilierung, da wir angeben, dass das Argument vom Typ „Integer“ ist. Daher wählt der Compiler die Methode 1 (Integer i) aus und führt den darin enthaltenen Code aus. Hinweis: Dieses Problem würde nicht bestehen bleiben, wenn die überschriebenen Methodenargumente vom primitiven Datentyp wären. Denn der Compiler wählt die am besten geeignete Methode aus und führt sie aus.