Javaプラットフォームの処理系は,バイナリ名(13.1)でパッケージ内の型を記憶しなければならない。型の名前付けの様々な方法は,その名前が同じ型を参照していることを確認するために,バイナリ名に展開しなければならない。コンパイル単位が次の単一の型インポート宣言(7.5.1)を含む場合を考える。ような)拡張子から構成される名前でファイル内にその型を見つけられなければ,コンパイル時エラーとする制約を課すことができる。型を宣言しているパッケージの他のコンパイル単位のコードによって,その型が参照されている。宣言している(それ故,潜在的には他のパッケージ内のコードからアクセスできる)。この制約は,コンパイル単位ごとにそうした型が高々一つ存在しなければならないことを意味する。この制約によって,Javaプログラム言語のコンパイラ又はJava仮想計算機の処理系は,パッケージ内で,名前付きクラスを容易に見つけられる。パッケージがデータベースに格納されるとき(7.2.2),ホストシステムはそうした制約を課してはならない。他のコンパイル単位内のコードから参照されているかどうかにかかわらず,多くのプログラマは,それぞれのクラス又はインタフェース型をそれ自体のコンパイル単位に入れている。最上位の型の名前が,同じパッケージ内で宣言された他の最上位のクラス又はインタフェース型の名前として現れた場合(7.6)は,コンパイル時エラーとする。最上位の型の名前が,型宣言を含むコンパイル単位(7.3)内の単一の型インポート宣言(7.5.1)でまた宣言された場合は,コンパイル時エラーとする。自体が完全限定名となる。局所的又は個人的利用に適している。パッケージが広く配布されることを意図されているならば,一意なパッケージ名(7.7)を付けるのがよい。同じパッケージの中でクラスとインタフェースとで二重に宣言していることによって発生する。クラス型宣言と単一の型インポート宣言とで宣言を試みている点である。クラスの名前が,そのクラス宣言を含むコンパイル単位(7.3)内の要求時の型インポート宣言(7.5.2)によってインポートされるかもしれない型の名前と同じであってもエラーとならない。