Programmation Orientée Objet – Java
Bertrand Estellon
Département Informatique et Interactions
Aix-Marseille Université
21 septembre 2016
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 1 / 171
Java Types génériques et paramétrés
Les types paramétrés
Supposons que nous ayons la classe suivante :
public class Stack {
private Object[] stack =new Object[100];
private int size = 0;
public void push(Object object) {
stack[size] = object;size++;
}
public Object pop() {
size--; Object object =stack[size];
stack[size]=null;// Pour le Garbage Collector.
return object;
}
}
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 117 / 171
Java Types génériques et paramétrés
Types paramétrés
Nous rencontrons le problème suivant :
Stack stack =new Stack();
String string ="truc";
stack.push(string);
string = (String)stack.pop(); // Transtypage obligatoire !
Nous avons également le problème suivant :
Stack stack =new Stack();
Integer integer =new Integer(2);
stack.push(integer);
String string = (String)stack.pop(); // Erreur à l'exécution
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 118 / 171
Java Types génériques et paramétrés
Types paramétrés
Par conséquent, on souhaiterait pouvoir préciser le type des éléments :
Stack<String>stack =new Stack<String>();
String string ="truc";
stack.push(string); // Le paramètre doit être un String.
string =stack.pop(); // La méthode retourne un String.
Java nous permet de dénir une classe Stack qui prend en paramètre un
type. Ce type paramétré va pouvoir être utilisé dans les signatures des
méthodes et lors de la dénition des champs de la classe.
Lors de la compilation, Java va utiliser le type paramétré pour eectuer :
des vérications de type ;
des transtypages automatiques ;
des opérations d’emballage ou de déballage de valeurs.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 119 / 171
Java Types génériques et paramétrés
Classes paramétrées
La nouvelle version de la classe Stack :
public class Stack<T> {
private Object[] stack =new Object[100];
private int size = 0;
public void push(T t) { stack[size] = t;size++; }
public Tpop() {
size--;
T t = (T)stack[size];
stack[size] = null;
return t;
}
}
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 120 / 171
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !