Maison > Java > javaDidacticiel > Comment Java gère-t-il la surcharge de méthodes ambiguës avec des arguments nuls ?

Comment Java gère-t-il la surcharge de méthodes ambiguës avec des arguments nuls ?

Linda Hamilton
Libérer: 2025-01-05 08:23:39
original
723 Les gens l'ont consulté

How Does Java Handle Ambiguous Method Overloading with Null Arguments?

Surcharge de méthode avec des arguments nuls ambigus

Lorsque la surcharge de méthode implique des paramètres pouvant accepter des valeurs nulles, Java peut rencontrer une ambiguïté dans la sélection de la méthode appropriée invoquer. Examinons un exemple pour comprendre le problème.

Considérez les trois méthodes suivantes avec des paramètres :

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");
}
Copier après la connexion

Si nous appelons doSomething(null), le compilateur lancera une "méthodes ambiguës" erreur. La raison en est que les trois méthodes peuvent accepter null comme valeur valide.

Cependant, le problème découle spécifiquement de la présence des méthodes Integer et char[]. Puisque Object est le supertype de char[], la version du tableau est plus spécifique que la version Object. Ainsi, en présence uniquement des méthodes Object et char[], la version tableau serait choisie.

Mais lorsque la version Integer est également disponible, elle et la version tableau deviennent plus spécifiques que la version Object. . Dans ce cas, Java ne peut pas déterminer quelle méthode est la plus appropriée pour gérer null.

Pour résoudre cette ambiguïté, on peut explicitement convertir l'argument en type souhaité. Par exemple :

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

Dans ce cas, Java choisira sans ambiguïté la version char[].

En pratique, cette ambiguïté est moins courante qu'il n'y paraît. En règle générale, les méthodes sont invoquées avec des arguments ayant des types spécifiques, plutôt que de s'appuyer sur des types nuls ou hautement génériques comme Object. Cependant, il est crucial de comprendre cette ambiguïté potentielle lorsque l'on travaille avec une surcharge de méthodes et des valeurs nulles.

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