logo

Methodenüberladung und Nullfehler in Java

In Java kommt es häufig vor, dass Methoden überladen werden. Unten finden Sie ein interessantes Java-Programm. 

CSV-Datei in Java lesen
Java
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 String
Java
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.