Probleme de cast sur arraylist

Résolu
Signaler
Messages postés
26
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
30 janvier 2007
-
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
-
salut

Je voudrais faire une méthode qui manipule une arraylist qui contient
des
objets de types différents (il me semble que c'est l'une des utilités
d'une arraylist sinon j'utiliserais un tableau). Je ne peux donc pas
utiliser la généricité et je ne peux pas toujours appliquer le même
cast. Je ne sais pas comment faire car je n'ai aucun moyen de savoir de
quel type est chaque objet de la liste (du moins je n'ai pas encore
trouvé).

Est ce que quelqu'un a une idée? merci

4 réponses

Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,



tu peux toujours utiliser instanceof.



exemple :



ArrayList<Object> list = new ArrayList<Object>();

list.add(new Integer(12));

list.add(new JFrame());

list.add(new JTextArea());



for(Object obj : list){

if(obj instanceof Integer)

int n = 10 + (Integer)obj;



if(obj instanceof JFrame);

((JFrame)obj).setVisible(true);



if(obj instanceof JTextArea)

((JTextArea)obj).setText("un text");

}

WORA
Messages postés
26
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
30 janvier 2007

merci en fait je croyais qu'on ne pouvait
pas faire "obj instanceof Integer" parce qu'à ce stade c'est un objet
et pas un integer. Il me semble que j'avais essayer et que ça ne
fonctionnait pas. J'ai du me tromper

merci
Messages postés
358
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
13 avril 2020

Integer est une classe envelope qui envelope les entiers(int)
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
8
Ou en notation "un peu plus objet" en utilisant la méthode isInstance de Class :
Integer integer = new Integer(12);

System.out.println(Integer.class.isInstance(integer));