package net.ftlines.blog.cdidemo.util; import java.util.Iterator; /** * Adapter that transforms iterator of one type into interator of another type * * @author igor * * @param <O> * old type * @param <N> * new type */ public abstract class IteratorAdapter<O, N> implements Iterator<N> { private final Iterator<? extends O> delegate; public IteratorAdapter(Iterator<? extends O> delegate) { this.delegate = delegate; } public boolean hasNext() { return delegate.hasNext(); } public N next() { return next(delegate.next()); } protected abstract N next(O next); public void remove() { delegate.remove(); } }