Heim > Java > javaLernprogramm > Wie löst Java die Mehrdeutigkeit einer Methode mit Nullargumenten auf?

Wie löst Java die Mehrdeutigkeit einer Methode mit Nullargumenten auf?

Mary-Kate Olsen
Freigeben: 2024-12-31 21:33:14
Original
367 Leute haben es durchsucht

How Does Java Resolve Method Overloading Ambiguity with Null Arguments?

Methodenüberladung mit Nullargumenten: Mehrdeutigkeit auflösen

Die Methodenüberladung von Java ermöglicht mehrere Methoden mit demselben Namen, aber unterschiedlichen Parametern. Beim Aufrufen einer Methode mit einem Nullargument kann der Compiler jedoch auf Unklarheiten stoßen, wenn mehrere anwendbare Methoden vorhanden sind.

Im angegebenen Codeausschnitt haben wir drei doSomething-Methoden mit den Parametern Object, char[] und Ganze Zahl. Beim Aufruf von doSomething(null) tritt ein mehrdeutiger Methodenfehler auf. Lassen Sie uns näher auf das Problem eingehen.

Mehrdeutigkeitsauflösung

Java priorisiert die spezifischste anwendbare Methodenversion (JLS §15.12.2). Alle drei Methoden akzeptieren null als gültiges Argument und sind daher gleichermaßen anwendbar.

Object vs. char[]

Object ist der Supertyp von char[], was bedeutet char[] ist spezifischer als Object. Wenn daher nur die Methoden Object und char[] vorhanden wären, würde die Methode char[] ausgewählt werden.

Object vs. Integer

Allerdings mit beiden Methoden char [] und Integer-Methoden vorhanden, keine ist spezifischer als die andere. Java kann nicht bestimmen, welches aufgerufen werden soll, was zu Mehrdeutigkeiten führt.

Lösung

Um die Mehrdeutigkeit aufzulösen, wandeln Sie das Nullargument explizit in den gewünschten Typ um:

doSomething((Integer) null);
Nach dem Login kopieren

In diesem Fall ruft der Compiler explizit doSomething(Integer obj) auf. Methode.

Praktische Relevanz

Mehrdeutigkeit mit Nullargumenten kommt seltener vor, als man denken könnte. Dies tritt typischerweise auf, wenn eine Methode explizit mit Null aufgerufen wird oder eine Variable eines nicht spezifizierten Typs (wie Object) verwendet wird.

Im Gegensatz dazu, wenn Sie eine Variable an eine Methode übergeben, wie zum Beispiel:

char[] x = null;
doSomething(x);
Nach dem Login kopieren

Java bestimmt die beabsichtigte Methode anhand des Variablentyps korrekt, obwohl ein Nullwert übergeben wird.

Das obige ist der detaillierte Inhalt vonWie löst Java die Mehrdeutigkeit einer Methode mit Nullargumenten auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage