Maison > Java > javaDidacticiel > Pourquoi Java restreint-il la surcharge des méthodes avec des méthodes équivalentes au remplacement ?

Pourquoi Java restreint-il la surcharge des méthodes avec des méthodes équivalentes au remplacement ?

Barbara Streisand
Libérer: 2024-12-13 09:25:14
original
274 Les gens l'ont consulté

Why Does Java Restrict Method Overloading with Override-Equivalent Methods?

Surcharge de méthodes : restriction de Java sur les méthodes équivalentes au remplacement

Java interdit la présence de deux méthodes au sein d'une classe avec un effacement identique malgré des paramètres différents genres. Cette contrainte provient des efforts du langage pour maintenir la compatibilité avec le code existant en utilisant des types bruts.

L'erreur de compilation survient lorsque deux méthodes avec des types de paramètres différents, tels que add(Set) et add(Set

Cette restriction existe pour éviter les conflits dans les situations où une classe hérite d'une superclasse utilisant raw genres. Dans de tels cas, le compilateur doit traiter les types bruts comme des équivalents de remplacement aux types générés pour garantir un remplacement de méthode approprié.

Par exemple, considérons une classe héritée CollectionConverter avec la méthode toList(Collection c) utilisant des types bruts. Si vous étendez cette classe et ajoutez une nouvelle méthode àList(Collection c), les deux méthodes seraient équivalentes au remplacement et satisferaient à l'exigence de remplacement.

Cependant, si vous ajoutez plus tard par erreur une troisième méthode àList( Collection c) à la sous-classe, le compilateur est confronté à une ambiguïté car il ne peut pas déterminer quelle méthode remplacer. Pour résoudre cette ambiguïté, Java applique une règle interdisant plusieurs méthodes équivalentes à un remplacement.

Il est important de noter que cette restriction n'est pas une limitation de l'effacement mais un choix de conception fait pour prendre en charge la compatibilité avec le code existant. Avec l'ajout de génériques aux identifiants de méthode, garantir l'unicité aurait été possible au moment de la compilation sans avoir besoin de cette règle. Néanmoins, Java maintient cette restriction par souci de compatibilité.

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