Heim > Java > javaLernprogramm > Wie kann die Mehrdeutigkeit einer Methodenüberladung mit Nullargumenten in Java behoben werden?

Wie kann die Mehrdeutigkeit einer Methodenüberladung mit Nullargumenten in Java behoben werden?

DDD
Freigeben: 2025-01-01 05:44:10
Original
504 Leute haben es durchsucht

How to Resolve Method Overloading Ambiguity with Null Arguments in Java?

Methodenüberladung mit Nullargument: Mehrdeutigkeit auflösen

In Java ermöglicht die Methodenüberladung mehrere Methoden mit demselben Namen, aber unterschiedlichen Parametertypen. Allerdings kann die Übergabe eines Nullarguments an überladene Methoden zu Compilerfehlern führen. Lassen Sie uns das Problem und seine Lösung untersuchen.

Bedenken Sie den folgenden Codeausschnitt:

public static void doSomething(Object obj) {
    System.out.println("Object called");
}

public static void doSomething(char[] obj) {
    System.out.println("Array called");
}

public static void doSomething(Integer obj) {
    System.out.println("Integer called");
}
Nach dem Login kopieren

Der Aufruf von doSomething(null) führt aufgrund der Mehrdeutigkeit der Methode zu einem Kompilierungsfehler. Java kann nicht bestimmen, welche Version von doSomething aufgerufen werden soll, da Integer, char[] und Object alle Nullwerte akzeptieren können.

Das Problem liegt in der gleichermaßen spezifischen Natur der Integer- und char[]-Methoden. Beide sind spezifischer als die Object-Methode, da sie einen engeren Parametertyp definieren. Daher kann Java nicht einer Methode Vorrang vor der anderen geben.

Um diese Mehrdeutigkeit aufzulösen, müssen Sie die beabsichtigte Methode explizit angeben, indem Sie das Argument in den gewünschten Typ umwandeln. Zum Beispiel:

doSomething((Object) null); // Calls doSomething(Object obj)
doSomething((char[]) null); // Calls doSomething(char[] obj)
Nach dem Login kopieren

Alternativ können Sie den Parametertyp in einer der überladenen Methoden auf nicht nullbar setzen. Dadurch würde sichergestellt, dass null nicht als Argument an diese Version übergeben werden kann. Zum Beispiel:

public static void doSomething(Object obj) {
    System.out.println("Object called");
}

public static void doSomething(char[] obj) { // Parameter type not nullable
    System.out.println("Array called");
}
Nach dem Login kopieren

Indem Sie das Argument umwandeln oder den Parametertyp nicht nullbar machen, stellen Sie Java zusätzliche Informationen zur Verfügung, um den Methodenaufruf eindeutig zu machen.

Das obige ist der detaillierte Inhalt vonWie kann die Mehrdeutigkeit einer Methodenüberladung mit Nullargumenten in Java behoben werden?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage