Überladener Methodenaufruf basierend auf Parametertyp
In Java ermöglichen polymorphe Methoden, sogenannte überladene Methoden, die Definition mehrerer Methoden mit dem Gleicher Name, aber unterschiedliche Parametertypen. Die Methodenauswahl, der Prozess der Bestimmung, welche überladene Methode aufgerufen werden soll, basiert auf dem statischen Typ der deklarierten Parameter, nicht auf ihrem tatsächlichen Typ.
Bedenken Sie den folgenden Code:
interface Callee { void foo(Object o); void foo(String s); void foo(Integer i); } class CalleeImpl implements Callee { // Method implementations omitted for brevity } Callee callee = new CalleeImpl(); Object i = new Integer(12); Object s = "foobar"; Object o = new Object(); callee.foo(i); callee.foo(s); callee.foo(o);
Dies Der Code gibt „foo(Object o)“ dreimal aus, obwohl die tatsächlichen Parametertypen „Integer“, „String“ und „Object“ sind. Dies liegt daran, dass Java statische Typisierung verwendet, was bedeutet, dass der Typ einer Variablen zur Kompilierungszeit bestimmt wird und während der gesamten Ausführung des Programms konstant bleibt.
Um diese Einschränkung zu überwinden und Methoden basierend auf dem tatsächlichen Parametertyp aufzurufen, kann man Folgendes tun: Erwägen Sie die Verwendung von Reflektion oder Generika. Es ist jedoch wichtig zu beachten, dass solche Techniken zusätzliche Komplexität mit sich bringen und möglicherweise nicht immer die am besten geeignete Lösung sind.
Das obige ist der detaillierte Inhalt vonWie wirkt sich die statische Typisierung von Java auf überlastete Methodenaufrufe basierend auf dem Parametertyp aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!