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") ;