Pour les pro du Java... une petite question sur les types! - Programmation
Marsh Posté le 29-10-2001 à 20:24:27
La conversion d'une instance d'une classe en une instance d'une autre classe s'appelle le transtypage, en Java ca marche comme ça:
Vector v = new Vector();
v.add("toto" );
String nom = (String) v.firstElement();
En Java on ne peut pas typer les collections, tu dois donc indiquer le type que tu veux avoir à chaque récupération d'un élément. ( Ca va peut-être changer un jour car c'est en cours de discussion au JCP JSR : Add Generic Types To The JavaTM Programming Language)
Marsh Posté le 29-10-2001 à 20:34:42
En anglais, on utiliseras le terme "cast" pour designer cette methode. Tu trouveras plein de docs sous ce terme la.
Marsh Posté le 29-10-2001 à 20:46:28
Merci beaucoup pour ta réponse... mais...
Mon problème est que le type des objet que j'ai placé dans la collection est un type que j'ai défini, appelons-le Node.
Ce Node est un type complexe puisqu'il s'agit en fait d'une classe avec plein de champs!
Mon problème est que le procédé que tu m'as indiqué ne fonctionne donc pas! Par exemple:
Node void Lecture(Vector v) { //Avec v contenant déjà des Node
Node n= new Node();
Node n= (Node) v.firstElement();
return(n);
}
Marsh Posté le 30-10-2001 à 09:27:59
phoenyx a écrit a écrit : Merci beaucoup pour ta réponse... mais... Mon problème est que le type des objet que j'ai placé dans la collection est un type que j'ai défini, appelons-le Node. Ce Node est un type complexe puisqu'il s'agit en fait d'une classe avec plein de champs! Mon problème est que le procédé que tu m'as indiqué ne fonctionne donc pas! Par exemple: Node void Lecture(Vector v) { //Avec v contenant déjà des Node Node n= new Node(); Node n= (Node) v.firstElement(); return(n); } |
Déjà, si tu évitais de déclarer ta fonction avec "Node void...", et que tu mettais simplement "Node Lecture(Vector v) {..."
je crois que ca irais bcp mieux
Si ça ne fonctionne toujours pas, indique nous le message d'erreur exacte qui t'es retourné.
@+
Marsh Posté le 30-10-2001 à 09:29:55
Je n'avais meme pas lu le code jusqu'au bout, il y a d'autres erreurs.
En voici un qui syntaxiquement devrait être correct :
Node Lecture(Vector v) { //Avec v contenant déjà des Node
Node n= new Node();
n= (Node) v.firstElement();
return(n);
}
Marsh Posté le 30-10-2001 à 11:10:44
Node n= new Node();
n= (Node) v.firstElement();
c'est con ça, ça sert à quoi de créer un new Node si c'est pour pas s'en servir ?
Marsh Posté le 30-10-2001 à 11:15:08
pab29 a écrit a écrit : Node n= new Node(); n= (Node) v.firstElement(); c'est con ça, ça sert à quoi de créer un new Node si c'est pour pas s'en servir ? |
exact
Marsh Posté le 31-10-2001 à 00:27:48
je dirais même plus :
public Node lecture(Vector v) {
return (Node) v.firstElement();
}
Marsh Posté le 21-12-2001 à 10:39:13
Je dirai qu'en plus, si tu retourne toujours le premier élément ça sert à rien !! Je verrais plutot :
public Node[] lecture(Vector v)
{
Node[] l_Nodes = new Node[v.size()];
Enumeration l_Objects = v.elements();
int l_Index = 0;
while (l_Objects.hasModeElement())
l_Nodes[i ++] = (Node)l_Objects.nextElement();
return l_Nodes;
}
Marsh Posté le 21-12-2001 à 13:37:36
je dirai encore plus : ca sert à quoi de poser la question "aux pros de Java" alors que c'est un problème de base et qu'on voit au 1er coup d'oeil que tu n'y connais quasiment rien en Java ??
Marsh Posté le 21-12-2001 à 13:58:11
benou a écrit a écrit : je dirai encore plus : ca sert à quoi de poser la question "aux pros de Java" alors que c'est un problème de base et qu'on voit au 1er coup d'oeil que tu n'y connais quasiment rien en Java ?? |
ttttt
Ne sois pas si agressif, veux tu!
Marsh Posté le 21-12-2001 à 14:02:50
ouais mais bon quand même ... faut pas pousser non plus ...
Marsh Posté le 21-12-2001 à 14:04:33
mais bon, je suis ennervé aujourd'hui ... ca m'apprendra a pas dormir ...
Marsh Posté le 21-12-2001 à 14:05:17
benou a écrit a écrit : ouais mais bon quand même ... faut pas pousser non plus ... |
Le topic qui est censé attiré tout le monde hein
Je vois ce que tu veux dire. Ca m'énerve aussi ce genre d'approches.
Marsh Posté le 29-10-2001 à 19:27:40
Salut à tous!
Je suis en train de commencer mon travail de fin d'étude en Java et petit à petit, je découvre ce merveilleux langage... mais:
En utilisant les List et autres structures fournies dans java.util, j'obtiens des erreurs de conversion de type à la compilation.
En effet, les fonctions fournies commme
public Object get(int index)
renvoient un type "Object" et.. si on place la valeur de retour dans une variable qui a le véritable type des éléments(par exemple List si on a une liste de listes)et PAF, une erreur!
Que faire? Y a-t-il une astuce? Faut-il créer soit même une fonction de conversion? Comment faire?
Merci d'avance.
[edtdd]--Message édité par phoenyx--[/edtdd]