Je voulais savoir si Generics fourni à partir de Java5 présente des avantages en termes d'exécution. Je veux dire, je sais que nous pouvons obtenir la sécurité de type pour les classes/collections et permettre une gamme d'objets possibles pour un générique, mais y a-t-il des avantages à l'exécution avant la compilation?Java Generics - avantages de l'exécution
Répondre
Les génériques Java sont supprimés à l'exécution via erasure, les performances doivent donc être identiques.
Certaines informations à leur sujet sont disponibles par réflexion (disons http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Constructor.html#getTypeParameters%28%29) mais elles ne permettent pas d'améliorer le fonctionnement de vos programmes. CoolBeans, je l'ai pris pour signifier "au-delà" avantages de temps de compilation.
J'ai compris. Merci pour la clarification. – CoolBeans
Oui - mais c'est très mineur. Lorsque vous utilisez des génériques, vous n'avez pas besoin d'utiliser instanceof
et de les transtyper partout, de sorte que les instructions de type bytecode qui vérifient le type pour ces instructions ne sont pas générées. En revanche, vous pouvez vous retrouver avec des erreurs de bas niveau lors de l'exécution si vous liez les anciennes versions de vos classes sans les recompiler. Cependant, si vous utilisez beaucoup une boucle serrée qui aurait autrement besoin d'une distribution, alors je suppose que les génériques pourraient accélérer un tout petit peu. Mais l'amélioration des performances n'est pas le but de les utiliser.
La plupart des instructions de casting sont toujours générées par le compilateur, et lorsque vous avez écrit votre programme sans génériques, vous n'avez pas besoin de vos instances de tests. –
- 1. Quels sont les avantages d'utiliser Generics?
- 2. Exemple de Java Generics
- 3. Java Generics Question
- 4. Java Generics héritage
- 5. Java Generics and Collections
- 6. Fonction Java Generics
- 7. Java: Instanceof et Generics
- 8. Generics in Java
- 9. Java Generics Question
- 10. Java Generics Curiosité
- 11. Java Generics circulaires
- 12. Java Generics problème
- 13. Java Generics Conundrum
- 14. Java Generics Question
- 15. Erreur dans Java Generics
- 16. Java Generics clarification
- 17. problèmes Java Generics
- 18. Java Generics Question
- 19. Generics en Java
- 20. Java Generics (Wildcards)
- 21. Java Generics type de limite
- 22. Java Generics, Generics étendues et des classes abstraites
- 23. Java Generics pour C# Gurus
- 24. Erasure étranges dans Java Generics
- 25. Java Generics Issue (avec Spring)
- 26. Java Generics <this??>
- 27. Problème inconnu avec Java Generics
- 28. insertion Java Generics sur wildcards
- 29. Generics utilisant Enum en Java
- 30. Java Generics Programmation avec Collection
Qu'est-ce que cela veut dire "avoir le temps d'exécution avant la compilation"? Comment courriez-vous sans compiler d'abord? – CoolBeans
Eh bien, le bénéfice d'exécution est moindre ClassCastExceptions – samitgaur
Moins d'exceptions ClassCast ne sont pas vraiment un avantage d'exécution - vous ne les obtenez pas quand même si votre code est correct. L'avantage est qu'il est plus facile d'écrire du code correct. – paulmurray