Java préfère généralement des méthodes normales aux génériques lors du choix de la méthode surchargée correcte, ce qui pourrait générer le SSCCE : sortie: p> existe-t-il un moyen de forcer Java à utiliser la version générique? P> P>
4 Réponses :
Une approche que j'ai vue est d'ajouter un paramètre factice à la méthode moins fréquemment utilisée: l'appelant comme p> mais sinon p> appelle la méthode générique. p> p>
Y a-t-il un moyen de forcer Java à utiliser la version générique? P> blockQuote>
Pas sans retrait, renommer ou autre chose de modification de la signature de la deuxième méthode. (Si vous voulez obtenir vraiment Hacky - ne faites pas cela - utilisez la réflexion pour invoquer la méthode.) C'est parce que La procédure de résolution de la surcharge de Java essaiera de Choisissez la méthode la plus spécifique possible. P>
15.12.2.5. Choisir la méthode la plus spécifique h3>
Si plusieurs méthodes membres sont à la fois accessibles et applicables à une invocation de méthode, il est nécessaire de choisir un pour fournir le descripteur pour l'envoi de la méthode d'exécution. Le langage de programmation Java utilise la règle que la méthode la plus spécifique em> est choisie. P>
L'intuition informelle est qu'une méthode est plus spécifique qu'un autre si l'invocation de la première méthode pouvait être transmise à l'autre sans erreur de type de compilation. P> blockQuote>
Non, pas à peu près de la suppression ou de la dissimulation de la surcharge plus spécifique. Pourtant, s'ils se comportent différemment, ils devraient simplement avoir des noms différents. Et s'ils se comportent de la même manière, cela ne devrait pas avoir d'importance. P>
Les méthodes génériques permettent de disposer des paramètres de type pour exprimer des dépendances entre les types d'un ou plusieurs arguments à une méthode et / ou de son type de retour. S'il n'y a pas une telle dépendance, une méthode générique ne doit pas être utilisée. P>
(de ici ) p>
WOW, quatre réponses complètement différentes mais toutes bonnes réponses.
Avez-vous un scénario de vie réel que vous pouvez partager pour cela ou est-ce juste théorique?
Ha, j'ai eu un scénario de vie réel (dans une classe avec beaucoup plus de méthodes que cela), mais (après avoir fait cette question), j'ai réalisé que j'ai commis une erreur et que les méthodes ont des noms différents. Mais la question est toujours intéressante.