Programmation Java: tout sur les génériques
L'un des objectifs de conception d'origine pour Java était de garder la langue aussi simple que possible. Le développeur du langage a pris certaines caractéristiques inutilement compliquées de C ++ et les jeta par la fenêtre. Le résultat a été une langue qui était élégant et épuré. Certaines personnes ont dit la langue était trop élégant.
Ainsi, après plusieurs années de discussions et de querelles, Java est devenu un peu plus compliqué. En l'an 2004, avait Java ENUM types, améliorée pour boucles, l'importation statique, et quelques autres nouvelles fonctionnalités intéressantes. Mais le propos de-parlé nouvelle caractéristique la plus a été l'introduction de médicaments génériques.
ArrayListpersonnes = new ArrayList () -
L'utilisation de quelque chose comme
Personnes ArrayList = new ArrayList () -
En ces jours, un ArrayList pourrait stocker presque tout ce que vous vouliez mettre en elle - un nombre, une Considération, un Chambre, un Chaîne . . . n'importe quoi. La ArrayList classe était très polyvalent, mais avec cette polyvalence est venu quelques maux de tête. Si vous pouvez mettre n'importe quoi dans un ArrayList, vous ne pouviez pas prévoir facilement ce que vous voulez sortir d'une ArrayList.
En particulier, vous ne pouvez pas facilement écrire du code qui suppose que vous aviez stocké certains types de valeurs dans le ArrayList. Voici un exemple:
Choses ArrayList = new ArrayList () - things.add (nouveau compte ()) - Compte monCompte = things.get (0) - // Ne pas utiliser ce. Il est mauvais code.
Dans la troisième ligne, l'appel à obtenir (0) attrape la première valeur dans la choses collection. L'appel à la obtenir (0) est correct, mais le compilateur étouffe sur la tentative de cession de mon compte. Vous obtenez un message sur la troisième ligne en disant que ce que vous obtenez à partir de la choses liste ne peut être fourré dans la mon compte variable.
Vous recevez ce message parce que, au moment où le compilateur atteint la troisième ligne, il a oublié que l'élément ajouté sur la deuxième ligne était de type Considération!
L'introduction des génériques résout ce problème:
ArrayListchoses = new ArrayList () -things.add (nouveau compte ()) - Compte monCompte = things.get (0) - // utiliser ce code à la place. Il est bon code.
Ajout
Java 5.0 ajoute génériques à Java. Mais peu de temps après la naissance de Java 5.0, les programmeurs ont remarqué combien maladroite du code des génériques peut être. Après tout, vous pouvez créer des génériques dans les médicaments génériques. Un ArrayList peut contenir un groupe de tableaux, dont chacun peut être un ArrayList. Donc vous pouvez écrire
ArrayList[]> Gâchis = new ArrayList []> () -
Toute la répétition en ce que désordre déclaration donne aux programmeurs un mal de tête! Pour éviter cette laideur, Java 7 et les versions ultérieures ont une opérateur diamant, lt;>. L'opérateur diamant raconte Java pour réutiliser autant de trucs incroyablement compliquée que vous mettez dans la partie précédente de la déclaration générique.
Dans cet exemple, la lt;> dit de réutiliser Java
ArrayList[]> Gâchis = new ArrayListlt;>() -
En Java 7 et plus tard, vous pouvez écrire une de ces désordre déclarations - la, déclaration méchant original avec deux occurrences de ArrayList
Oui, le code simplifié est toujours compliqué. Mais sans tous les ArrayList