Я изучаю шаблоны проектирования из серии «Head First». Книга немного устарела (нет общих типов), поэтому я пытаюсь переписать ее часть. Я должен написать Wrapper на Iterator
для работы Enumerator
методов и протестировать его с помощью ArrayList.Java: реализация универсального итератора
«Оригинальная» версия выглядела так (внизу). Я попытался сделать его общим классом, например <E>
или даже <T<E>>
, но это не сработало. Я также хочу быть уверенным, что он будет работать для любого итератора, а не только ArrayList
, как ArrayList<T>
. Каков правильный способ реализации этого?
public class IteratorWrapper implements Enumeration {
Iterator iterator;
public IteratorWrapper(Iterator iterator){
this.iterator = iterator;
}
public boolean hasMoreElements(){
return iterator.hasNext();
}
//Return generic Type T
public Object nextElement(){
return iterator.next();
}
}
Тест класс
public class WrapperTest {
public static void main(String[] args){
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("element1");
arrayList.add("element2");
//This part will be rewritten when wrapper will work
IteratorWrapper iteratorWrapper = new IteratorWrapper(arrayList.iterator());
while(iteratorWrapper.hasMoreElements()){
System.out.println(iteratorWrapper.nextElement());
}
}
}
Что вас пытаться? Какую ошибку вы получили? – SLaks