Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/11/2009, à 20: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, à 20:14)

Hors ligne

#2 Le 19/11/2009, à 20: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, à 17: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, à 18: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, à 19: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, à 20: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, à 21: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, à 22: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