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.
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ù? –
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'. –
Mettre ceci: public Enumeration