Il testo dell'esercizio:
L'iteratore standard della classe Vector<T> scandisce gli elementi dalla posizione 0 fino alla posizione size() - 1.
Scrivere la classe RevVector<T> che estende Vector<T> e ridefinisce il solo metodo iterator(), restituiendo un oggetto della nuova classe RevVectIterator<T>.
Definire la classe RevVectIterator<T> che implementa Iterator<T>, e realizza un iteratore che scandisce gli elementi di un vettore in ordine inverso a quello standard.
Codice di RevVectIterator<T> che implementa Iterator<T>.
codice:
import java.util.*; 

public class RevVectIterator<T> implements Iterator<T>
{
    private Vector<T> v;
    private int curr;

    public RevVectIterator(Vector<T> v)
    {
        this.v = v;
        this.curr = this.v.size() - 1;
    }

    public boolean hasNext()
    {
        return(curr > 0);
    }

    public T next() throws NoSuchElementException
    {
        try
        {
                return (v.get(curr--));
        }
        catch (ArrayIndexOutOfBoundsException e)
        {
                throw new NoSuchElementException();
        }
    }

    public void remove()
    {
        v.remove(curr);
    }
}
Questo codice funziona, l'ho testato richiamando tale classe in modo diretto. Ora devo fare la classe RevVector<T>, quella che ridefinisce solo il metodo iterator() e restituisce un nuovo elemento di tipo RevVectIterator<T>.
Come la faccio? Ho capito che dentro il metodo iterator() che devo ridefinire dovrò creare un nuovo elemento di tipo RevVectIterator<T> e restituirlo, il punto è che il costruttore di RevVectIterator prende un Vector come parametro, cosa gli passo come parametro? Qualcuno può aiutarmi?