[Java] Pb de casting, depuis un Vector [Résolu]

Pb de casting, depuis un Vector [Résolu] [Java] - Java - Programmation

Marsh Posté le 10-07-2002 à 13:45:47    

Vouala le code :
v est un Vector

Code :
  1. Boolean [] b=(Boolean [])(v.toArray());


me balance l'exception : java.lang.ClassCastException: [Ljava.lang.Object;
 
bon, alors là je me dis, mon vector est mal foutu. voyons voir :
 

Code :
  1. Object [] o=(v.toArray());
  2. System.out.println("contenu :" );
  3. for (int j=0;j<o.length;j++) {
  4.     System.out.println("  "+o[j].getClass());
  5. }
  6. Boolean [] b=(Boolean [])o;


et là :

Code :
  1. contenu :
  2.   class java.lang.Boolean
  3.   class java.lang.Boolean
  4.   class java.lang.Boolean
  5.   class java.lang.Boolean
  6.   class java.lang.Boolean
  7.   class java.lang.Boolean
  8.   class java.lang.Boolean
  9. java.lang.ClassCastException: [Ljava.lang.Object;


 
Il est où le problème


Message édité par bobuse le 10-07-2002 à 14:08:54
Reply

Marsh Posté le 10-07-2002 à 13:45:47   

Reply

Marsh Posté le 10-07-2002 à 13:46:34    

j'ajoute que l'exception me renvoie bien à la ligne ou je recaste !

Reply

Marsh Posté le 10-07-2002 à 13:51:08    

Comme tu l'as vu, ton vecteur contient des Boolean. Par contre toArray() renvoie un tableau d'Object. Faut caster apres avoir récupéré l'élément
 

Code :
  1. Object [] o= v.toArray();
  2. for (int j=0;j<o.length;j++) {
  3.    Boolean  b=(Boolean)o[j];
  4.    //traitement
  5. }


 
Si tu veux absolument un tableau de Boolean, faut le créer et le remplir manuellement.

Reply

Marsh Posté le 10-07-2002 à 13:53:49    

Ha bon ?
 
Mais c'est tout pourri alors !  :heink:  :sweat:

Reply

Marsh Posté le 10-07-2002 à 13:56:00    

ben Vector est générique, il ne peut donc gérer que des objets.
Comment tu veux qu'il devine que y'a que des booléens dedans, alors qu'il pourrait y avoir n'importe quoi d'autre a coté ?

Reply

Marsh Posté le 10-07-2002 à 13:59:40    

oui d'accord, mais je trouve ça nul qu'on puisse pas recaster un tableau ([])

Reply

Marsh Posté le 10-07-2002 à 14:01:04    

paske moi j'ai une fonction qui prend en paramètre un (Boolean []), alors je transforme mon Vector en tableau  d'Object , que je recaste ensuite et hop !  :fou:

Reply

Marsh Posté le 10-07-2002 à 14:05:44    

Essaye comme ça :  
 
 
 
Boolean [] tab = (Boolean[]) v.toArray(new Boolean[v.size()]);
 
Ca devrait marcher.

Reply

Marsh Posté le 10-07-2002 à 14:06:37    

bobuse a écrit a écrit :

paske moi j'ai une fonction qui prend en paramètre un (Boolean []), alors je transforme mon Vector en tableau  d'Object , que je recaste ensuite et hop !  :fou:  




 
bon ben c'est un peu lourd, mais pas très difficile...
 

Code :
  1. Object[] os = v.toArray();
  2. Boolean[] bs = new Boolean[os.length];
  3. for(int i=0;i<os.length;i++)
  4.   bs[i] = (Boolean)os[i];

Reply

Marsh Posté le 10-07-2002 à 14:08:23    

:jap:  :jap:  :jap:  :jap:  
bien ouèj gfive !

Reply

Marsh Posté le 10-07-2002 à 14:08:23   

Reply

Marsh Posté le 10-07-2002 à 14:12:36    

:D Appelle moi maître, non mais!:p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed