Quelles sont les différences entre les implémentations C# et Java de la classe générique List?C# vs Java - Listes génériques
Répondre
Demandez-vous des différences dans leur API ou leur implémentation sous-jacente? Je crois que les génériques Java sont implémentés complètement via le compilateur - la JVM n'a aucune notion de générique. Pour C#, les génériques sont un concept intégré de l'exécution .Net. Wikipedia semble avoir une bonne comparaison des deux: http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java#Generics
Eh bien, en Java List<T>
est une interface, pour commencer :)
La différence la plus importante entre les deux est la différence entre C# et Java génériques à Commençons par: en Java, les génériques effectuent essentiellement des vérifications à la compilation et incluent des métadonnées dans des champs génériques, etc. - mais l'objet ne connaît pas son type générique au moment de l'exécution. Vous ne pouvez pas demander à un List<?>
quoi cela? est, en d'autres termes. Toutes les références à un paramètre de type générique dans la mise en œuvre agissent comme Object
, fondamentalement - ainsi un ArayList<String>
est réellement soutenu par un Object[]
. En C#, toutes les informations sont également disponibles au moment de l'exécution. Par conséquent, un List<string>
est soutenu par un string[]
. De même, les génériques C# permettent des arguments de type valeur, donc vous pouvez avoir un List<int>
en C# mais pas en Java.
Il existe d'autres différences en termes de variance, etc., mais cela se déplace beaucoup depuis List<T>
.
En termes de justeArrayList<T>
(Java) et List<T>
(.NET), quelques différences:
- Java liste surchargent equals/hashCode, alors qu'ils ne le font pas dans .NET
ArrayList<T>
se développe en multipliant la capacité actuelle par 3/2;List<T>
de .NET permet de doubler la capacité actuelle à la place
Bien sûr, il existe d'autres différences en termes des API exposées - si vous pouviez donner plus d'informations sur le genre de différence que vous êtes intéressé, nous pourrions aider plus.
Et je me souviens d'avoir demandé pourquoi vous auriez toujours upvotes @ meta. Très bonne réponse. –
Mais la liste C#
- 1. Listes génériques C#
- 2. C++/CLI: Listes de boxe et génériques
- 3. Liste des listes génériques
- 4. java génériques et C++ templates
- 5. Java Affectation de référence avec des listes génériques
- 6. java génériques génériques
- 7. Java vs sortie C
- 8. ArrayList vs collections génériques
- 9. Comment lancer dynamiquement des listes génériques en C#?
- 10. Problème de désérialisation des listes génériques avec C# XmlSerializer
- 11. Comment comparer deux listes génériques en C# 3.0?
- 12. listes génériques avec Accès notation délégué
- 13. Génériques Java de génériques de
- 14. Génériques Java
- 15. Génériques Java
- 16. Pilote Modbus: C vs Java
- 17. C principal vs Java principal
- 18. Java Pointer vs C# IntPtr
- 19. .NET: Combinaison de deux listes génériques
- 20. génériques java et SuppressWarnings
- 21. Les paragraphes vs listes ordonnées
- 22. C# Enums vs Listes pilotées par les données
- 23. Question sur les génériques Java
- 24. Java: différentes interfaces génériques
- 25. Conversion de génériques Java
- 26. Java génériques méthode redéfinie
- 27. Génériques Java et "..."
- 28. Problème de génériques Java
- 29. Jackson JSON + Java Génériques
- 30. Génériques en Java
Bien, pour un, Liste (http://java.sun.com/javase/7/docs/api/java/util/List.html) est une interface en Java, pas une classe. L'équivalent Java de la classe générique C# List est ArrayList –
bien qu'un peu daté, semble intéressant: http://www.artima.com/intv/generics.html – Zaki