2010-05-30 5 views
0

Goodmorning tout le monde,Eclipse dit que je ne mettons pas en œuvre Enumeration, mais je ne

Je vais avoir un petit problème avec un projet pour l'école. On nous dit de faire un itérateur qui implémente l'énumération sur un hashmap.

donc je l'ai fait cette Enumeration:

public Enumeration<Object> getEnumeration() { 
     return new Enumeration<Object>() { 
      private int itemsDone = 0; 
      Collection<Long> keysCollection = getContent().keySet();    
      Long [] keys = keysCollection.toArray(new Long[keysCollection.size()]); 


      @Override 
      public boolean hasMoreElements() { 
       if(itemsDone < getContent().size() +1) { 
        return true; 
       }else { 
        return false; 
       } 

      } 
      @Override 
      public Object nextElement() {    
       return getContent().get(keys[itemsDone++]); 
      } 
     }; 
    } 

Cela va dans ma classe de Backpack

public class Backpack extends Item implements Carrier, Enumeration<Object>{ 

Le hashmap est retourné par getContent(). Le problème est maintenant que l'éclipse continue de me dire que je n'ai pas implémenté les méthodes d'Enumeration. Si j'utilise le correctif rapide, il ajoute simplement les méthodes manuelles hasMoreElements() et nextElement() dans ma classe. D'une certaine manière, il ne voit pas ces méthodes dans la classe interne ..

Quelqu'un peut-il m'aider s'il vous plaît? Toute aide est appréciée.

Répondre

1

Backpack ne l'implémente pas. La classe interne anonyme utilisée dans getEnumeration fait. Si vous voulez que Backpack lui-même implémente l'énumération, il doit avoir ces méthodes.

+0

Mais alors, comment puis-je créer une méthode qui renvoie une énumération sur le contenu de ce sac à dos. (Et par cela je veux dire sur le contenu variabele qui est un Hashmap) Je ne veux pas énumérer sur le sac à dos, mais sur le contenu de la hashmap. Quelque part dans le code, il devrait indiquer implements Enumeration, non? Si oui, où? –

+0

Non, vous renvoyez une instance d'une [classe interne anonyme] (http://oopweb.com/Java/Documents/ThinkingInJava/Volume/TIJ310.htm) qui implémente une interface. Dans ce cas, vous n'utilisez pas le mot clé 'implements'. –

+0

Mettre ceci: public Enumeration getEnumeration() {return new Enumeration () { est suffisant pour indiquer que ma classe « outils » Enumeration ou que je fournis les utilisateurs de ma classe avec un Enumeration? –

Questions connexes