Wie in der folgenden Abbildung dargestellt, befinden sich Iterable
alle übrigen Konstrukte (interface / class / abstract class) mit Ausnahme von interface in demselben Paketjava.util
Warum Iterable
sitzt im java.lang
Paket?
Hinweis: Es wird beabsichtigt, den Paketierungsaspekt der Java-Programmierung zu verstehen.
java
api
packages
collections
überaustausch
quelle
quelle
Antworten:
Wie in seinem Javadoc erklärt , besteht der Zweck von
Iterable
darin, eine bestimmte Sprachsyntax zu unterstützen :Als solches gehört es zum lang-Paket , welches
Andere Klassen im Diagramm gehören zu JCF und befinden sich daher im util-Paket which
quelle
Iterator
sollte im Idealfall auch drin seinjava.lang
, daIterable
ist. Natürlich muss es ausjava.util
Gründen der Abwärtskompatibilität sein (es wurde im JDK eingeführt, lange bevor das "foreach" -Konstrukt ihm eine Rolle in der eigentlichen Sprache gab).Iterable
onIterator
, imjava.lang
Allgemeinen nicht von Klassen abhängtjava.util
.)Denn viele Dinge implementieren die Schnittstelle Iterable oder erweitern sie als Subschnittstelle .
Die implementierenden Klassen sind:
Dies ist eine riesige Liste. Und es berührt alle Arten von Paketen da draußen.
Darüber hinaus möchten Sie zirkuläre Paketabhängigkeiten minimieren . Wenn eine Klasse in Paket A von einer Klasse in Paket B abhängt, die von einer Klasse in Paket A abhängt, besteht eine zirkuläre Abhängigkeit. Sie sind nicht immer schlecht, dass sie existieren - aber sie führen zu anderen zirkulären Abhängigkeiten und das kann eine schlechte Sache sein. Es ist an sich nicht schlecht, aber es ist ein Designgeruch, der darauf hinweist, dass die Kopplung zwischen zwei Klassen oder Paketen zu eng ist. Es ist der Beginn der Ansammlung technischer Schulden.
Die Lösung hierfür lautet: "Ja, die Iterable-Schnittstelle ist in einer Vielzahl von Klassen und Paketen in der gesamten Java- und Javax-Struktur von Bedeutung. Sie sollte sich in der untersten Ebene der Sprachbibliotheken befinden - Java .lang. "
Und hier finden Sie es.
Verwandte Lesung:
quelle