Javaが他のクラスをインポートする必要があるのに、なぜIntegerやStringなどのクラスをインポートする必要がないのですか?
9 に答える
の暗黙のインポートがありjava.lang.*
ます。
Java仕様から:
コンパイルユニットは、パッケージで宣言されているすべての型に自動的にアクセスでき、事前定義されたパッケージで宣言されているすべてのパブリック型を自動的にインポートします
java.lang
。
java.lang
パッケージはデフォルトでインポートされます。明示的にインポートする必要はありません。
パッケージ内のクラスをjava.lang
インポートする必要はありません(コンパイラは常にインポートされるように動作します)。このパッケージには、String、Enum、Runnable、NullPointerExceptionなどのコアクラスと、もちろん、IntegerやDoubleなどのプリミティブラッパークラスが含まれています。
java.lang.*
なぜなら、それらはパッケージに属しているからです。そして、それはコンパイラによって暗黙的にインポートされます。もしそうなら、それはあなたに文句を言うことはありません。
java.langはビルド内であり、Javaに暗黙的にインポートされ、手動でインポートする必要はありません。
Integer、Stringなどのクラスは、デフォルトでインポートされるパッケージjava.langに存在します。
非常に頻繁に使用されるクラスが含まれているため、便宜上インポートすることはオプションになっています。
javaのすべてのクラスはパッケージ内にあり、パッケージが定義されていない場合は、デフォルトのパッケージとして理解されます。また、パッケージの上部にはjava.lang。*があるため、他のクラスをインポートするためにインポートする必要はありません。
「java.langは唯一の自動インポートパッケージですか?」に関する質問の場合 2つのパッケージがあります。
- java.lang
- 名前なし
詳細については、こちらを参照してください。 https://www.quora.com/Which-package-is-available-by-default-in-java