où j'essaie de créer deux méthodes de surcharge statiques, j'ai eu une erreur de compilation. Quelqu'un peut-il expliquer cela?
3 Réponses :
La raison est Effacement de type . Les génériques ne sont pas stockés dans les classes, elles ne compilent que des informations sur le temps, donc au moment de l'exécution, les deux méthodes sont identiques et il y a donc un conflit de dénomination.
référence strong> p> Ces trois méthodes sont en réalité identiques (lues: elles produisent un bytecode identique): p> Si vous voulez vraiment avoir deux méthodes distinctes, vous devez fournir Différentes signatures de méthodes (par exemple, différents noms de méthodes, un paramètre supplémentaire pour l'une des méthodes, etc.) P> P>
La résolution de la méthode est effectuée à l'heure de la compilation. La langue Java pourrait donc être étendue pour permettre ce type de surcharge sans réification. Cependant, il est probablement plus simple d'insister sur une meilleure méthode nommée.
Oui, mais l'objectif était de ne pas casser le format binaire (le code hérité devait continuer à fonctionner, même avec le nouveau code)
du point de vue des paramètres de méthodes SET définissez code>. Aussi à l'exécution des deux ressemblera à ...
annulation statique du public A (set Stringset) {} code> et
annulation statique publique A (Set Mapset) {} code> p>
Vous avez eu l'erreur du compilateur car les méthodes ne sont pas surchargées correctement. Les deux méthodes ont un paramètre de type défini qui rend les méthodes identiques à son compilateur. P>