#1 Le 19/11/2009, à 21:14
- NiRaDo
[Java] Un tableau d'objets de type générique ?
Bonjour.
J'ai définit une classe Couple :
public class Couple<L, R> {
private L left;
private R right;
public Couple(L left, R right) {
this.left = left;
this.right = right;
}
public L getLeft() {
return this.left;
}
public R getRight() {
return this.right;
}
}
Mais cette ligne ne peut compiler :
Couple<Double, int[]>[][] buffer = new Couple<Double, int[]>[2][5];
Pourtant la syntaxe est bien celle là : Type[][] nom = new Type[][];
Quelqu'un aurait-il une idée ?
Dernière modification par NiRaDo (Le 19/11/2009, à 21:14)
Hors ligne
#2 Le 19/11/2009, à 21:49
- Karl_le_rouge
Re : [Java] Un tableau d'objets de type générique ?
Les generics en Java ne sont que du sucre syntaxique (rien à voir avec les templates du C++), les paramètres doivent impérativement dériver d'Object. Le seul intérêt par rapport à la méthode pre-Java 5 (en gros, utiliser object puis faire des casts), c'est que les vérifications de types se font à la compilation (plus robuste, lisible, sécurisant etc ..)
Dans ton cas, tu remplaces int par Integer et tu remercieras l'auto-boxing.
Hors ligne
#3 Le 21/11/2009, à 18:35
- NiRaDo
Re : [Java] Un tableau d'objets de type générique ?
Euh...
Même chose pour :
Couple<Double, Integer[]>[][] buffer = new Couple<Double, Integer[]>[2][5];
J'ai une erreur.
Hors ligne
#4 Le 21/11/2009, à 19:18
- Karl_le_rouge
Re : [Java] Un tableau d'objets de type générique ?
même chose pour les tableaux Java qui ne dérivent pas d'Object.
Hors ligne
#5 Le 21/11/2009, à 20:40
- NiRaDo
Re : [Java] Un tableau d'objets de type générique ?
Que proposes-tu, dans ce cas ? Je ne vois pas comment faire autrement :s
Hors ligne
#6 Le 21/11/2009, à 21:02
- Karl_le_rouge
Re : [Java] Un tableau d'objets de type générique ?
Une possibilité c'est d'utiliser une collection, par exemple ArrayList.
Hors ligne
#7 Le 21/11/2009, à 22:10
- NiRaDo
Re : [Java] Un tableau d'objets de type générique ?
Oui c'est bien ce que je voulais faire, mais ça ne passe pas non plus
Couple<Double, ArrayList<Integer>>[][] buffer = new Couple<Double, ArrayList<Integer>>[2][5];
Hors ligne
#8 Le 21/11/2009, à 23:14
- Karl_le_rouge
Re : [Java] Un tableau d'objets de type générique ?
Tu ne peux pas instancier un tableau d'éléments de type générique (enfin, il y a quelques exceptions).
Je te conseille la lecture de ce document:
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
Ce cours peut également t'aider, si ce document est trop abstrait:
http://www-igm.univ-mlv.fr/~forax/ens/java-avance/cours/pdf/VII-%20Type%20parametre.pdf
Hors ligne