Затмение говорит, что я не реализую перечисление, но я делаю - PullRequest
0 голосов
/ 30 мая 2010

Доброе утро всем,

У меня небольшая проблема с проектом для школы. Нам сказано создать итератор, который реализует перечисление поверх хэш-карты.

Итак, я сделал это перечисление:

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++]);
            }
        };
    }

Это относится к моему классу рюкзака

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

Хеш-карта возвращается методом getContent (). Теперь проблема в том, что Eclipse постоянно говорит мне, что я не реализовал методы из Enumeration. Если я использую быстрое исправление, он просто добавляет в мой класс фиктивные методы hasMoreElements () и nextElement (). Каким-то образом он не видит эти методы во внутреннем классе ..

Может кто-нибудь помочь мне, пожалуйста? Любая помощь приветствуется.

1 Ответ

1 голос
/ 30 мая 2010

Backpack не реализует это. Анонимный внутренний класс, используемый в getEnumeration, делает. Если вы хотите, чтобы сам Backpack реализовывал перечисление, ему нужны эти методы.

...