ArrayList
de Java 4, qui permet de stocker des objets dans une liste. Cette classe expose entre autres une méthode
get()
, et une méthode
add(Object)
.
Exemple 18. Classe
ArrayList
de Java 4
public class ArrayList { public Object get() { ... } public void add(Object object) { ... } }
String
, on devra écrire
(String)list.get()
.
String
dans une telle liste, on ne pourra s'en rendre compte qu'à la lecture du contenu de la liste.
String
, pouvoir détecter dès la compilation que l'on est en train d'ajouter d'autres éléments que des
String
dans notre liste, et éviter d'avoir à faire des
cast
lors de la lecture.
En utilisant les génériques, on peut écrire notre classe
ArrayList
de la façon suivante.
Exemple 19. Classe
ArrayList
de Java 5
public class ArrayList<T> { public T get() { ... } public void add(T t) { ... } }
T
est le type générique. Lors de l'instanciation de cette classe, on doit lui donner une valeur, qui doit être une classe ou une interface. Dans le cas où
T
représente le type
String
, notre classe devient :
Exemple 20. Un
ArrayList
de
String
public class ArrayList<String> { public String get() { ... } public void add(String s) { ... } }
Exemple 21. Instanciation d'un
ArrayList
générique
private ArrayList<String> listOfString = new ArrayList<String>() ; private ArrayList<Integer> listOfInteger = new ArrayList<Integer>() ;
add()
prend une
String
en paramètre. Ajouter un objet d'un autre type mènera bien à une erreur de compilation, ce qui était notre objectif. De plus, la méthode
get
retourne également une
String
, ce qui va nous éviter d'utiliser un cast à chaque lecture. On voit également que l'on peut, de la même façon, créer une liste d'autres type que
String
,
Integer
par exemple.
Exemple 22. Déclaration d'une méthode générique
public class ArrayUtils { public static <T> T getFirst(T[] arrayOfT) { ... } }
public static
).
Voyons la syntaxe générale d'appel d'une telle méthode.
Exemple 23. Appel d'une méthode générique
String first = ArrayUtils.<String>getFirst("Surcouf", "Auguin", "Tabarly") ;