2016-08-06 2 views
0
import java.util.*; 

public class HelloWorld{ 

    public static void main(String []args){ 
     HashMap<Integer,String> h = new HashMap<Integer,String>(); 
     h.put(100,"Hola"); 
     h.put(101,"Hello"); 
     h.put(102,"light"); 
     System.out.println(h); // {100=Hola, 101=Hello, 102=light} 
     Set s = h.entrySet(); 
     System.out.println(s); // [100=Hola, 101=Hello, 102=light] 
     for(Map.Entry<Integer,String> ent : s) 
     { 
      System.out.println("Key=" + ent.getKey() + " Value=" + ent.getValue()); 
     } 
    } 
} 

Compile erreurLooping par Set contenant des objets Entrée

HelloWorld.java:13: error: incompatible types: Object cannot be converted to Entry<Integer,String>                       
     for(Map.Entry<Integer,String> ent : s)                                    
              ^

Je suis en train d'imprimer paire clé-valeur pour chaque objet de type d'entrée dans le jeu s. Mais cela donne l'erreur de compilation ci-dessus. Mais le code fonctionne bien si je remplace "s" par "h.entrySet()" et boucle bien..Comment utiliser la référence pour maintenir "h.entrySet()" provoque une erreur de compilation?

Répondre

1

La ligne

Set s = h.entrySet(); 

devrait être

Set<Map.Entry<Integer,String>> s = h.entrySet(); 

parce que pour chaque boucle ci-dessous ne sait pas quel type de Set s est?

Ce code fonctionne:

import java.util.*; 

public class HelloWorld{ 

    public static void main(String []args){ 
     HashMap<Integer,String> h = new HashMap<Integer,String>(); 
     h.put(100,"Hola"); 
     h.put(101,"Hello"); 
     h.put(102,"light"); 
     System.out.println(h); // {100=Hola, 101=Hello, 102=light} 
     Set<Map.Entry<Integer,String>> s = h.entrySet(); 
     System.out.println(s); // [100=Hola, 101=Hello, 102=light] 
     for(Map.Entry<Integer,String> ent : s) 
     { 
      System.out.println("Key=" + ent.getKey() + " Value=" + ent.getValue()); 
     } 
    } 
} 

Chaque fois que vous voyez

incompatible types: Object cannot be converted to.. error 

cela signifie machine virtuelle Java tente de type objet caché à un autre type et elle conduit à une erreur de compilation. Ici, ça se passe dans la boucle for.