IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Création d'un tableau de Vecteur de String


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut Création d'un tableau de Vecteur de String
    Bonjour,

    Je ne sais pas comment créer un tableau de vecteur de String. Le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import java.util.Vector;
     
     
     
    public class A {
     
    private Vector<String>[] a;
     
    	public A () {
    		a = new Vector[1];
    	}
    }
    ... me sort un warning (sous Eclipse 3.2) :
    Type Safety: The expression of type Vector[] needs unchecked conversion to conform to Vector<String>[]

    Et le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import java.util.Vector;
     
     
     
    public class A {
     
    private Vector<String>[] a;
     
    	public A () {
    		a = new Vector<String>[1];
    	}
    }
    ... me sort une erreur :
    Cannot create a generic array of Vector<String>
    J'aimerai savoir comment on doit s'y prendre pour créer un tableau de vecteur de string...

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par Claythest
    J'aimerai savoir comment on doit s'y prendre pour créer un tableau de vecteur de string...
    Ce n'est pas possible... On ne peut pas créer de tableau d'une collection générique, ce que tu peut employer comme palliatif, c'est un vecteur de vecteur de String :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vecteur<Vecteur<String>>

  3. #3
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par wichtounet
    Ce n'est pas possible... On ne peut pas créer de tableau d'une collection générique, ce que tu peut employer comme palliatif, c'est un vecteur de vecteur de String :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vecteur<Vecteur<String>>


    Alors là je ne savais pas ! Je ne comprends pas pourquoi Java ne permet pas de faire un tableau d'un type générique... Si quelqu'un veut bien me l'expliquer

    En tout cas merci beaucoup pour cette réponse

    (La généricité en Java a encore besoin de progresser je me trompe ? )

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Citation Envoyé par Claythest
    Je ne comprends pas pourquoi Java ne permet pas de faire un tableau d'un type générique...
    Le type des tableaux est vérifié à l'exécution, alors que le type des Generics est vérifié à la compilation et perdu à l'exécution...

    De plus les tableaux ne sont pas type-safe (dans le sens où ils peuvent générer des ClassCastException malgré une compilation sans erreur).

    Ainsi le mélange des deux peut générer des erreurs inattendus à des endroits inattendus... d'où le warning et l'erreur...

    Mais tu peux quand même en créer en utilisant l'annotation @SuppressWarnings pour "ignorer" le warning (a utiliser avec précaution), et donc pour créer un tableau de Vector paramétré il suffit d'appeler cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	@SuppressWarnings("unchecked")
    	private Vector<String>[] createVectorArray(int size) {
    		return new Vector[size];
    	}
    a++

    PS : Pourquoi utiliser des Vector et non pas une ArrayList et cacher l'implémentation grâce à l'interface List ???

    [edit] PS.2 : A lire : Les Generics ne sont pas des Templates comme les autres !

  5. #5
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par adiGuba
    De plus les tableaux ne sont pas type-safe (dans le sens où ils peuvent générer des ClassCastException malgré une compilation sans erreur).
    Ah j'aurai juré le contraire...


    Merci en tout cas pour les explications et les liens

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Claythest
    Ah j'aurai juré le contraire...
    En fait les tableaux sont relativement sûr lorsqu'on les manipules simplement, mais dès qu'on joue avec le type du tableau lui-même on peut avoir des warning, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		Object[] array = new String[3];
    		array[0] = new Integer(0);
    Ce code compile parfaitement sans erreur ni warning, mais provoquera une ClassCastException à l'exécution sur la seconde ligne car on tente de mettre un Integer dans un tableau de String !


    Les Generics sont beaucoup plus restrictif et prévoient ce type d'erreur, ainsi le code suivant ne compile pas (erreur sur la première ligne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		List<Object> list = new ArrayList<String>();
    		list.add(new Integer(0));
    Et celui ci provoquera un warning sur la seconde ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		List list = new ArrayList<String>();
    		list.add(new Integer(0));
    a++

  7. #7
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Superbe explication !

    Merci beaucoup adiGuba

  8. #8
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Citation Envoyé par Claythest
    Merci beaucoup adiGuba
    adiGuba mon héros, il est balaise cet homme là !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création d'un tableau en shell à partir d'un string
    Par jimmy4413 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 31/05/2011, 14h00
  2. [JNI] création d'un tableau de Strings
    Par myryad dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/04/2008, 11h51
  3. Création dynamique de tableau.
    Par Yux dans le forum C
    Réponses: 6
    Dernier message: 05/11/2005, 16h24
  4. Création d'un tableau composé de TComboBox
    Par gilles641 dans le forum Langage
    Réponses: 1
    Dernier message: 26/07/2005, 10h30
  5. [tableau à 2 dimensions] association String et float
    Par LoLoSS dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/07/2004, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo