Ich mal wieder und mal wieder Generics.
Und zwar habe ich eine generische Iteratorklasse:
Selbiger iteriert immer über eine eigene Datenklasse, welche String und Wert besitzt.
Der Konstruktor des Iterators (public FilteringIterator(Iterator<T> i)) bekommt also immer einen Iterator dieser Datenklasse übergeben.
Soweit kein Problem. Durchiterieren etc geht ja alles super.
Wie schon gesagt hat die Datenklasse einen String. An einigen Stellen muss ich den Iterator nun überschreiben und das Objekt was bei next() zurückgegeben wird ist dann nicht mehr die Datenklasse selber sondern deren String. (Also unter 1.4 ging das ja ohne Probleme). Der Iterator wäre dann FilteringIterator<String>.
Das geht ja nun aber nicht, da wenn T ein String ist ich selbigen nicht im Konstruktor übergeben kann, denn da muss ein Iterator der Datenklasse angegeben sein.
Ich dachte erst sowas wie
geht, aber da ist ja die super-Klasse entscheidend.
Gibt es de facto eine Möglichkeit mit reinem 1.5 Code das beides unter einen Hut zu bringen?
Vielen Dank.[/code]
Und zwar habe ich eine generische Iteratorklasse:
Code:
private class FilteringIterator<T> implements Iterator<T> {
Selbiger iteriert immer über eine eigene Datenklasse, welche String und Wert besitzt.
Der Konstruktor des Iterators (public FilteringIterator(Iterator<T> i)) bekommt also immer einen Iterator dieser Datenklasse übergeben.
Soweit kein Problem. Durchiterieren etc geht ja alles super.
Wie schon gesagt hat die Datenklasse einen String. An einigen Stellen muss ich den Iterator nun überschreiben und das Objekt was bei next() zurückgegeben wird ist dann nicht mehr die Datenklasse selber sondern deren String. (Also unter 1.4 ging das ja ohne Probleme). Der Iterator wäre dann FilteringIterator<String>.
Das geht ja nun aber nicht, da wenn T ein String ist ich selbigen nicht im Konstruktor übergeben kann, denn da muss ein Iterator der Datenklasse angegeben sein.
Ich dachte erst sowas wie
Code:
private class FilteringIterator<T> implements Iterator<Datenklasse> {
geht, aber da ist ja die super-Klasse entscheidend.
Gibt es de facto eine Möglichkeit mit reinem 1.5 Code das beides unter einen Hut zu bringen?
Vielen Dank.[/code]