Confusion

Résolu
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010 - 26 juil. 2010 à 15:44
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010 - 2 août 2010 à 10:56
notre prof nous a donné cet exercice en examen

package p1;
import java.util.*;
public class ss {
public static void main(String[] args){
Map m1=new HashMap ();
m1.put(1, "One");
m1.put(2, "Two");
m1.put(3, "Three");
Iterator <String> I = m1.keySet().iterator();
System.out.println(m1.values());
while(I.hasNext())
System.out.println(m1.get(I.next()));

}

}
il nous a demandé de dire est ce que ça va marcher ou non. Après l'examen, il a dit que ça va marcher mais quand j'ai testé ça me donne une exception. Sachant que pour moi c'est évident que ça ne va pas marcher et aussi le compilateur aussi ne l'a pas accepter, le prof lui m'a envoyé une image en me montrons que son compilateur l'a accepté et lui a donnée comme valeur null null null
moi je l'ai testé dans eclipse sous linux (ubuntu et fedora) et le prof l'a testé sur eclipse de windows.

6 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
2 août 2010 à 10:18
Salut,

Si tu déclares une map de type Map tu ne peux PAS faire un itérator de type String (Iterator <String>) en te basant sur les clés... car tu définis les clés comme étant des Integer (Map<Integer, String>) et les valeurs comme étant des String (Map).

Il y a 2 solutions pour compiler ce prog sans erreurs :
1 : Ne pas utiliser la généricité - Tu n'auras plus de typage des données et java fera le taf seul
2 : Se droguer et être ivre mort au point de croire que le compilateur ne fait pas d'erreurs




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
3
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
26 juil. 2010 à 17:33
Bonjour.
Quel exception reçois tu ?
0
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010
26 juil. 2010 à 22:38
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from Iterator to Iterator<String>

at p1.ss.main(ss.java:9)

ce qui est normal
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
27 juil. 2010 à 10:37
Bonjour.
L'environnement (linux / windows) n'est a priori pas responsable de cette différence.
Il faudrait mieux comparer les versions de compilateur utilisés.

Cdt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010
27 juil. 2010 à 12:06
Cette conversion à mon avis n'existe pas en java, et j'ai lu ça dans un cour de généricité. J'aimerai bien qu'un expert de java me donne la réponse.
0
ynabid Messages postés 24 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 9 août 2010
2 août 2010 à 10:56
mdr c'est la réponse que j'attendais. Normalement c'est la base de Java, mais quand un prof fait cette erreur on doute. Merci!
0
Rejoignez-nous