Typsichere Liste

	   
	   List<T> neueListe = new List<T>();
	   
	   this.reset();
	   while(!this.endpos()) {
		   
		   neueListe.add(this.elem());
		   this.advance();
	   }
	   this.reset();
	   return neueListe;
   }
}```

so habe ich die clone() Methode geändert... allerdings zeigen jetzt beide Listen auf die gleichen Elemente, weil es eine Shallow Copy ist oder?
Aber wie kann ich ein neues Objekt vom Typ T erstellen???

also nochmal was anderes,
für schlaue Weisheiten nie zu schade:

Shallow Copy ist hier absolut üblich, macht etwa auch ArrayList
(sowie quasi alle anderen Standardklassen der Welt die clonen,
etwa auch LinkedList, welche glatt den Code mit begin und next zeigen würde :wink: )

     * Returns a shallow copy of this <tt>ArrayList</tt> instance.  (The
     * elements themselves are not copied.)
     *
     * @return  a clone of this <tt>ArrayList</tt> instance.
     */
    public Object clone() {
	try { 
	    ArrayList<E> v = (ArrayList<E>) super.clone();
	    v.elementData = (E[])new Object[size];
	    System.arraycopy(elementData, 0, v.elementData, 0, size);
	    v.modCount = 0;
	    return v;
	} catch (CloneNotSupportedException e) { 
	    // this shouldn't happen, since we are Cloneable
	    throw new InternalError();
	}
    }

Objekte beliebig zu kopieren wäre in der Tat etwas drastisches,
kannst Clonable für die Elemente annehmen, aber muss nicht stimmen…

T muss dich dabei aber nicht allzu sehr kümmern, falls du eine Object-Kopie hinbekämst, einfach auf T casten, wird dann schon stimmen

ich denke aber nicht dass das in der Aufgabe gemeint war,
es ist schwer und man will das in der Regel auch nicht,

Einträge sind kein Spaß sondern meist wichtige Objekte, die nicht zufällig neu entstehen dürften,
eine Liste zu kopieren ist dagegen sinnvoll, die eine wird verändert, die andere erhält den Originalzustand, beide auf dieselben Einträge