Que signifie <E>
sur le code Collection<E>
?Que signifie <E> dans Collection <E>?
Répondre
C'est l'utilisation de génériques. Cochez cette case intro. Et puis n'oubliez pas de lire ceci tutorial.
En voici un extrait (qui compare l'utilisation d'une distribution par rapport à l'utilisation des médicaments génériques):
Quand vous voyez le code < type>, lisez comme « de type »; la déclaration ci-dessus se lit comme "Collection de chaîne c." Le code en utilisant des génériques est plus clair et plus sûr. Nous avons éliminé une fonte non sécuritaire et un certain nombre de parenthèses supplémentaires . Plus important encore, nous avons déplacé une partie de la spécification de la méthode d'un commentaire à sa signature , de sorte que le compilateur peut vérifier au moment de la compilation que le type les contraintes ne sont pas violés lors de l'exécution temps. Parce que le programme compile sans avertissements, nous pouvons affirmer avec qu'il ne lancera pas une ClassCastException lors de l'exécution. L'effet net de l'utilisation de génériques, en particulier dans les grands programmes, est amélioration de la lisibilité et la robustesse.
Par exemple, l'interface d'une liste est
public interface List<E> {
void add(E x);
Iterator<E> iterator();
}
Cela signifie que vous pouvez construire une liste dont le contenu sont tous du même type explicite (non seulement de type Object), même si vous avez défini le type vous-même. Donc, si vous créez une classe de nom vous pouvez écrire
List<Name> nameList = new List<Name>();
puis le remplir avec les instances de nom et de récupérer directement les instances de nom de sans avoir à jeter ou autrement inquiéter à ce sujet parce que vous aurez toujours un nom instance ou null retour, jamais une instance d'un type différent. Plus important encore, vous ne pouvez pas insérer quelque chose de différent d'une instance de nom dans une telle liste, car elle échouera au moment de la compilation.
nameList.add(false); //Fails!
nameList.add(new Name("John","Smith")); //Succeeds supposing Name has a
//firstName, lastName constructor
J'ai lu 'List
Cela signifie que vous traitez une collection d'éléments de type E
. Imagine que tu as une tasse de thé. Au lieu de thé, il pourrait également tenir le café donc il est logique de décrire la coupe comme une entité générique:
class Cup<T> { … }
maintenant
vous pourriez le remplir, que ce soit avec du café ou du thé (ou autre chose):
Cup<Tea> cuppa = new Cup<Tea>();
Cup<Coffee> foamee = new Cup<Coffee>();
Pour que cela fonctionne, les types Tea
et Coffee
doivent également être définis dans votre programme.
Il s'agit d'une contrainte de compilation sur votre code.En revenant de l'exemple de tasse (plutôt inutile), les collections (tableaux, listes ...) contiennent généralement des éléments de type un type, par ex. entiers ou chaînes. Les génériques vous aident à exprimer ceci en Java:
Collection<String> strList = new ArrayList<String>();
strList.add("Foobar"); // Works.
strList.add(42); // Compile error!
Vous remarquez l'erreur de compilation ci-dessus? Vous obtenez seulement ceci en employant des génériques. Le code suivant fonctionne également, mais ne donnerait pas le bon message d'erreur:
Collection strList = new ArrayList();
strList.add("Foobar"); // Works.
strList.add(42); // Works now. Do we really want this?!
bonne explication :) – Johanna
Un contact déroutant que la classe Cup
@lagerdalek: qui n'a pas échappé à mon attention du tout. ;-) En fait, cette explication est inspirée par ceci: http://www.zazzle.com/c_cup_of_t_mug-168503670567870702 –
- 1. Que signifie la méthode <ClassName>?
- 2. ASP.NET: Que signifie le '#' commençant un <% %>?
- 3. <sécurité: custom-authentication-provider /> signifie?
- 4. Que fait <() dans Bash?
- 5. Tortoise svn ajoutant <<<< aux fichiers!
- 6. Comment mapper une collection <T> dans NHibernate?
- 7. Qu'est-ce que <span></span> élément?
- 8. <? Php vs <? ...Est-ce que ça importe?
- 9. Collection <T> par rapport à la liste <T> que devez-vous utiliser sur vos interfaces?
- 10. <% $, <% @, <% =, <% # ... quel est le problème?
- 11. Que représentent $ <et $ @ dans un Makefile?
- 12. Élégante façon de faire Dictionnaire <Clé, Collection <Value>>
- 13. invokeAll() ne sont pas prêts à accepter une collection <Callable<T>>
- 14. Meilleure façon d'utiliser la liste <T> et d'exposer Collection <T>
- 15. quand utiliser Collection <T> vs Liste <T>
- 16. self.class_eval << DEF ... DEF
- 17. le plus rapide Convertir Collection Liste <T>
- 18. async = attribut "async" d'une balise <script> en html, qu'est-ce que cela signifie?
- 19. Que signifie filtrer une collection «verticalement» et «horizontalement»?
- 20. SortedList <>, SortedDictionary <> et Dictionary <>
- 21. Qu'est-ce que cela signifie de dire que "la clause where des instructions select peut effectuer>,> =, <, <= opérations sur une seule colonne"?
- 22. System.LINQ.Dynamic: Sélectionnez ("new (...)") dans une liste <T> (ou toute autre collection énumérable de <T>)
- 23. Manipulation <td> dans différents <tr>
- 24. << and >> symboles dans Erlang
- 25. IntelliSense <% = destiné <% @ Assembly = retourné
- 26. Dans MVC, quand utilisez-vous <%= %> et <% %>?
- 27. Echappement d'un <? Php et <? dans un script PHP
- 28. astyle formatage ligne multiple <<
- 29. Dans ASP.Net, quelle est la différence entre <% = et <% #
- 30. comment exploser <br><br/><br /> tags dans une chaîne?
J'ai besoin de votre aide pour mieux apprendre les collections. – Johanna