Java pour l'informatique industrielle
Chapitre 1. Introduction aux objets
Chapitre 2. Les structures de contrôle
Chapitre 3. Unifier et réutiliser
3.1. Motivation
3.2. Exploiter l'orthogonalité
3.3. Les interfaces
3.4. Le polymorphisme
3.5. L'héritage
3.6. Les collections
3.6.1. La classe java.util.ArrayList
3.6.2. Utilisation
3.6.3. Transtypage
3.6.4. Exercice
3.6.5. Les collections génériques
3.7. Objets et HDL
Chapitre 4. Modèle, Vue et Contrôle
Chapitre 5. Les entrées/sorties
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

3.6.5. Les collections génériques

Les collections génériques permettent de préciser le type statique des objets contenus dans une collection, ce type est Object pour une collection non-générique.

ArrayList<ICompteur> autreListe = new ArrayList<ICompteur>();

La collection autreListe peut contenir uniquement des éléments de type compatible avec le ICompteur.

autreListe.add(new Compteur()); // Compteur implémente ICompteur autreListe.add(new CompteurModulo()); // CompteurModulo hérite de Compteur autreListe.add("rouge"); /* n'est PAS autorisé car String n'est pas compatible avec ICompteur*/

La classe ArrayList<ICompteur> a en fait une méthode add(ICompteur o); qui permet d'ajouter uniquement des ICompteur et une méthode ICompteur get(int indice); qui permet de récupérer les ICompteur contenus. Ainsi, l'expression autreListe.get(0) est de type statique ICompteur et l'instruction autreListe.get(0).incrementer(); est donc autorisée.

Jusqu'au JDK1.5 il n'y avait pas de moyens pour éviter de remonter à la classe Object lorsqu'on utilisait des collections. Ceci engendrait plusieurs erreurs dynamiques de transtypage. Les collections génériques ont été introduites dans la définition de Java2 1.5, en partie pour éviter ces erreurs.

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante