Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi,
ich habe mir dieses Beispiel angeschaut und ausprobiert:
Code:
import java.util.StringTokenizer;
public class WordIteratorDemo
{
public static void main( String args[] )
{
String s = "Am Anfang war das Wort - am Ende die Phrase. (Stanislaw Jerzy Lec)";
for ( Object words : new WordIterator(s) )
System.out.println( words );
}
}
class WordIterator implements Iterable, SimpleIterator
{
private StringTokenizer st;
WordIterator( String s )
{
st = new StringTokenizer( s );
}
public SimpleIterator iterator()
{
return this;
}
// Methoden vom SimpleIterator
public boolean hasNext()
{
return st.hasMoreTokens();
}
public Object next()
{
return st.nextToken();
}
}
Da es aber SimpleIterator nicht gibt, habe ich Iterator genommen.
Dann wollte ich es auf Java 1.4 Basis ausprobieren, nämlich so:
Code:
for ( Iterator simpleiterator = (new WordIterator(s)).iterator();
simpleiterator.hasNext(); )
{
Object obj = simpleiterator.next();
System.out.println( obj );
}
Dann kam folgende Fehlermeldung:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Iterator cannot be resolved to a type
at WordIteratorDemo.main(WordIteratorDemo.java:24)
Ist das hier "for ( Iterator simpleiterator = (new WordIterator(s)).iterator(); simpleiterator.hasNext(); ) " bei Dir die Zeile 24 in der Datei "WordIteratorDemo.java" ?
Sieht nämlich so aus, als würde der Cast von WordIterator zu Iterator nicht funktionieren!?
Iterator ist eine Schnittstelle, da muss ich nichts importieren.
Ist das hier "for ( Iterator simpleiterator = (new WordIterator(s)).iterator(); simpleiterator.hasNext(); ) " bei Dir die Zeile 24 in der Datei "WordIteratorDemo.java" ?
die Methode iterator in der Klasse Wortiterator liefert einen SimpleIterator zurück. Scheinbar implementiert dieser nicht Iterator, daher klappt der cast nicht !!
Man sollte auch keine Klasse implements Iterator machen sondern gibt diesen immer als lokale Implementierung beim Aufruf zurück, daher geh ich davon aus, dass die Klasse nicht zu Iterator gecastet werden aknn
die Methode iterator in der Klasse Wortiterator liefert einen SimpleIterator zurück. Scheinbar implementiert dieser nicht Iterator, daher klappt der cast nicht !!