以下の図のように、インターフェイスIterable
を除いて、残りのすべての構成要素(インターフェイス/クラス/抽象クラス)は同じパッケージJava.util
Iterable
はなぜJava.lang
パッケージ?
注:Javaプログラミング)のパッケージ化の側面を理解することを目的としています。
javadoc で説明されているように、Iterable
の目的は特定の言語構文をサポートすることです:
このインターフェイスを実装すると、オブジェクトを「foreach」ステートメントのターゲットにすることができます
そのため、それは lang package に属し、
Javaプログラミング言語の設計の基礎となるクラスを提供します。
図の他のクラスは [〜#〜] jcf [〜#〜]に属しているため、- til package which
コレクションフレームワークが含まれています...
多くのものがインターフェイス Iterable を実装するか、サブインターフェイスとして拡張するためです。
実装クラスは次のとおりです。
これは膨大なリストです。そして、そこにあるあらゆる種類のパッケージに触れています。
さらに、 パッケージの循環依存関係 を最小限に抑える必要があります。パッケージAのクラスがパッケージAのクラスに依存するパッケージBのクラスに依存している場合、循環依存関係があります。それらが存在することは必ずしも悪いことではありませんが、他の循環依存関係につながり、それが悪いことになる場合があります。それ自体は悪くありませんが、2つのクラスまたはパッケージ間の結合が強すぎることを示すのは、デザインのにおいです。技術債務の積み上げの始まりです。
これに対する解決策は、「はい、Iterableインターフェースは、Javaとjavax構造の全体にわたって、さまざまなクラスとパッケージに依存しているものです。それは言語ライブラリの最も基本的なもの-Java.lang。」
そして、それはあなたがそれを見つける場所です。
関連読書: