Je viens de remarquer qu'il y a un Method.getGenericReturnType()
ainsi que Method.getReturnType()
et des paires similaires pour les types d'exception et les types de paramètres. Je pensais que les génériques en Java fonctionnaient par effacement de type. Alors, comment ces méthodes fonctionneraient-elles à l'exécution? (et à quoi ferais-je appel pour à l'exécution?)Réflexion Java: comment fonctionnent les méthodes Method.getGenericXXXXX?
4
A
Répondre
6
Les génériques qui ont des types concrets faisant partie des déclarations (méthodes, champs, classes, arguments) sont conservés.
Ainsi, vous pouvez obtenir les types de cette déclaration
public List<String> toString(List<Foo> foos) { .. }
Mais vous ne pouvez pas partir de ce code:
public List<E> transform(List<E> list) {
// E is not accessible at runtime
}
1
Generics peut fonctionner par l'effacement, mais le code qui utilise vos classes compilées encore besoin d'utiliser correctement les génériques. Il y a des informations supplémentaires pour le compilateur, que vous pouvez obtenir, mais cela ne change pas son comportement d'exécution.
Questions connexes
- 1. Réflexion Java - Méthodes Introspection
- 2. Comment fonctionnent les méthodes surchargées?
- 3. Réflexion Java: Comment puis-je obtenir toutes les méthodes getter d'une classe Java et les invoquer?
- 4. Comment invoquez-vous les méthodes du module Ruby par réflexion?
- 5. Comment fonctionnent les méthodes de requête d'attribut?
- 6. Comment les méthodes virtuelles fonctionnent en C#?
- 7. réflexion appelant 2 méthodes
- 8. RÉFLEXION - comment obtenir tous les champs et méthodes
- 9. Comment fonctionnent les objets Java?
- 10. Groovy - réflexion sur une classe Java - méthodes et paramètres
- 11. java méthodes d'appel par réflexion d'un objet déjà chargé
- 12. Invoquer des méthodes à variables variables avec la réflexion Java?
- 13. méthodes ne fonctionnent pas
- 14. RMI + réflexion java
- 15. Les méthodes extdirectspring ne fonctionnent pas
- 16. Les méthodes Objective-C ne fonctionnent pas
- 17. Java réflexion dans Android: interfaces
- 18. Réflexion et méthodes natives privées
- 19. L'instrumentation ne fonctionne pas pour les méthodes appelées par réflexion
- 20. Java - BigDecimal et réflexion
- 21. Comment fonctionnent les événements dans Java Swing?
- 22. comment les écouteurs de java fonctionnent
- 23. Comment fonctionnent les assertions dans Java?
- 24. Comment les structures fonctionnent-elles en Java?
- 25. Comment fonctionnent les jokers en Java
- 26. Comment fonctionnent les méthodes scipy.stats. <Distribution> .fit?
- 27. comment fonctionnent les méthodes onStart et onResume dans android
- 28. DataTables et comment fonctionnent les méthodes de filtrage
- 29. Java/Récupère tous les arguments en réflexion
- 30. Java: surutilisation de la réflexion?
bizarre ... donc si je suis en train de faire la distribution de la méthode d'exécution (http://stackoverflow.com/questions/6021109/java-runtime-method-resolution) alors je dois aussi m'inquiéter de cet aspect? –
(n'avez-vous pas besoin d'un '' avant la 'Liste ' dans votre 2ème exemple?) –
Je suppose que E fait partie de la déclaration de classe, mais il peut être dans la méthode aussi. – Bozho