Ich bin verwirrt über die folgende Situation im Zusammenhang mit Java OOP und Java API/Quellcode-Anordnung. Basierend auf Oracle's Java 8 API ist hasNext() eine abstrakte Methode, aber ich konnte nicht finden, wo hasNext() implementiert ist. Ich habe gelesen, dass private innere Klassen verwendet werden, um verschiedene Iteratoren in jeder Collection-Klasse zu implementieren, aber es gibt keine weiteren Informationen darüber, wie der Speicherort der Implementierung gefunden werden kann. Einige Benutzer haben mir vorgeschlagen, Java JRE 1.8-Quellcode zu meiner Eclipse-IDE hinzuzufügen, aber ich kann nur boolean hasNext();
als abstrakte Methode in der Iterator-Schnittstelle deklarieren.Wie finde ich die Implementierung der abstrakten Methode, hasNext()?
Wie im folgenden Beispiel gezeigt, verwendet der Iterator obj hasNext() direkt ohne es zu implementieren. Mir wurde jedoch beigebracht, dass Sie eine abstrakte Methode in einer Schnittstelle implementieren müssen.
Meine Frage:
(1) Wie finde ich die Implementierung der abstrakten Methode, hasNext()? (2) Ein Kommentar sagt, dass ich den Code here finden kann. Was ist der Grund, hasNext() in der ArrayList-Klasse zu implementieren, aber hasNext() als abstrakte Methode zu markieren? Es ist nicht intuitiv, die hasNext() - Implementierung auf diese Weise zu finden.
List<String> list = new ArrayList<String>();
list.add("item-1");
list.add("item-2");
list.add("item-3");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
Welche IDE verwenden Sie? In IntelliJ IDEA können Sie eine Methode auswählen, STRG drücken und mit der linken Maustaste klicken, und Sie gelangen direkt zu dem Punkt im Code, an dem die Methode geschrieben wurde. –
Genau hier. http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#748 –
Es klingt wie Sie versuchen zu fragen "Wo ist * ArrayLists * 'Iterator.hasNext()' implementiert.Wenn das der Fall ist (Sie suchen nach einer Implementierung im Besonderen), ist es hilfreich, dies in der Frage zu sagen. – dimo414