Maison > Java > javaDidacticiel > Comment Java résout-il l'ambiguïté de surcharge des méthodes avec des arguments nuls ?

Comment Java résout-il l'ambiguïté de surcharge des méthodes avec des arguments nuls ?

Mary-Kate Olsen
Libérer: 2024-12-31 21:33:14
original
366 Les gens l'ont consulté

How Does Java Resolve Method Overloading Ambiguity with Null Arguments?

Surcharge de méthodes avec des arguments nuls : résoudre l'ambiguïté

La surcharge de méthodes de Java autorise plusieurs méthodes avec le même nom mais des paramètres différents. Cependant, lors de l'appel d'une méthode avec un argument nul, le compilateur peut rencontrer une ambiguïté s'il existe plusieurs méthodes applicables.

Dans l'extrait de code donné, nous avons trois méthodes doSomething avec les paramètres Object, char[] et Entier. Lors de l’appel de doSomething(null), une erreur de méthode ambiguë se produit. Examinons le problème.

Résolution d'ambiguïté

Java donne la priorité à la version de méthode applicable la plus spécifique (JLS §15.12.2). Les trois méthodes acceptent null comme argument valide, ce qui les rend également applicables.

Object vs. char[]

Object est le supertype de char[], ce qui signifie char[] est plus spécifique que Object. Par conséquent, si seules les méthodes Object et char[] existent, la méthode char[] serait sélectionnée.

Object vs. Integer

Cependant, avec les deux char Les méthodes [] et Integer sont présentes, aucune n'est plus spécifique que l'autre. Java ne peut pas déterminer lequel appeler, ce qui entraîne une ambiguïté.

Solution

Pour résoudre l'ambiguïté, convertissez explicitement l'argument nul en type souhaité :

doSomething((Integer) null);
Copier après la connexion

Dans ce cas, le compilateur appellera explicitement le doSomething(Integer obj) méthode.

Pertinence pratique

L'ambiguïté avec des arguments nuls est moins courante qu'on pourrait le penser. Cela se produit généralement lors de l'appel explicite d'une méthode avec null ou de l'utilisation d'une variable d'un type non spécifié (comme Object).

En revanche, si vous transmettez une variable à une méthode, telle que :

char[] x = null;
doSomething(x);
Copier après la connexion

Java déterminera correctement la méthode prévue en fonction du type de variable, malgré le passage d'une valeur nulle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal