Programmation java et type Object

[Résolu]
Signaler
Messages postés
23
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
9 novembre 2004
-
Messages postés
23
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
9 novembre 2004
-
Bonjour
J'aimerais recupérer un element d'un vecteur vect et le mettre dans une variable de type int de la manière suivante:
int w;
w=vect.elementAt(0);
or lors de la compilation j'ai un problème d' "incompatibles types"
Quelqu'un pourrait t'il m'aider svp.
Merci

3 réponses

Messages postés
23
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
9 novembre 2004

en fait il faut faire :
Integer toto = (Integer)monvector.elementAt(0); // Cast obligatoire !!!!
int titi = toto.intValue();

Merci quand même de ton aide Neodante.
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
:big) Neodante :big)

Erreur de débutant !!!!
Tous les éléments placés dans un Vector sont de type Object (normal je dirais !) hors si tu veux extraire ou même placer un entier de type int dans ce Vector tu vas devoir utiliser une classe enveloppe (du moins pour les versions avant java 5.0 qui ne font pas de l'autoboxing !).

Une classe enveloppe c'est quoi ???
Tu ne peux pas mettre des types primitifs dans un Vector (le problème est le même pour les ArrayList !) tel que long, int, float, byte, ... seul des objets peuvent y être placés. Par conséquent java possède des objets tel que Long, Integer, Float, Byte, ... qui permettent de mettre une valeur d'un certain type sous une forme objet pour pouvoir être placé dans un tableau d'objet...
Donc pour pouvoir extraire un int ou un object, tu dois toujours faire un cast, et si c'est un objet enveloppe ensuite extraire la valeur de cet objet :
Integer integer = new Integer(5);
monvector.add(integer);
Integer toto = (Integer)monvector.elementAt(0); // Cast obligatoire !!!!
int titi = toto.value();
Voilà ;-)
@+

[Responsable www.neogamedev.com]
Messages postés
23
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
9 novembre 2004

Voici mon code:

Integer inte=(Integer)vect.elementAt(0); // on recupère le voisin

int w=inte.value();

lorsque je compile, il me mets "cannot resolve symbol" !!
que faire !!