答えて
Javaのパッケージはネストされていません。あなたはは、java.awt.event
としてjava.awt
下にあるすべてのパッケージを、インポートされていません - あなたimport java.awt.*
、あなただけのパッケージjava.awt
にあるすべてのクラスとインターフェイスをインポートしている
。
パッケージがネストされているように見えます(つまり、の「サブパッケージ」であると思われます)。これは実際のケースではありません。 java.awt
とjava.awt.event
は、名前に共通の部分を持つ2つの異なる無関係なパッケージとみなす必要があります。
java.awtパッケージ(ただしそのサブパッケージではない)からのインポートのみ、java.awt.eventからのインポートのみ(他のパッケージからのインポートはありません)。
Javaのパッケージは階層構造にすることができますが、その階層構造で構成する必要がありますが、importステートメントは「保守的」な傾向があります。そのパッケージ内からすべての型をインポートすると、階層の下位レベルにあります。
私はそれの背後にある理論的根拠が偽の輸入を避けることだと思います。依存関係やあいまい性を避けるために、できるだけ少ないものをインポートすることはお勧めです(たとえば、新しいクラスが名前に矛盾する名前でパッケージに追加された場合どうなりますか?別のパッケージ?)。そのため、Eclipseを使用してインポートを整理すると、実際にはアスタリスクのバージョン内に特定のインポートステートメントが追加されますが、これは余分な行を意味します。サブパッケージ内のすべてをインポートすることはさらに悪化します。本当にすべてを取得します。
さらに、一般的なプラクティスは、専用クラスと実装固有クラスをそれぞれのサブパッケージに入れることです。特に重要でない限り、インポートすることを避けたいと思うことがよくあります。繰り返しますが、サブツリー全体をインポートすることはそれと矛盾します。
java.awt.*
はではありません。あなたが期待していると思うものです。
java.awt.*
は、ネストされたパッケージではなく、正確なパッケージのクラスのみを提供します。下の名前空間の衝突を想像してみてください!
import com.*
それは*
を使用するには、悪い習慣とみなされることに留意すべきです。クラス名のインポートが優先されることを説明します。さらに読書のために
は前に言ってきました。
インポート持つjava.awt。* java.awt.eventのいずれかのクラスをインポートしません...
そして、それらの2つのパッケージの違いは、java.awtです。* Frame、Buttonなどのクラスとjava.awt.event。*パッケージには、発生するすべてのイベント/リスナーが含まれます。
例:ボタンを作成するには、クラスjava.awt.Buttonが必要ですが、ボタンをクリックしたときにアクションが発生するようにするには、java.awt.event.ActionListenerが必要です。クリックしてから、java.awt.event.ActionEventを生成します。
- 1. Javaジェネリックスワイルドカードの混乱
- 2. Javaデザインの混乱
- 3. Javaパケットの混乱
- 4. Java短絡混乱
- 5. Javaでのループの混乱
- 6. のJavaジェネリックの混乱
- 7. Javaのインタフェースとの混乱
- 8. Javaのxml.startElement()パラメータの混乱
- 9. JavaのHashMapのキー混乱
- 10. JAVA:インスタンスリファレンスとの混乱
- 11. Javaオブジェクトのスライシング混乱
- 12. 混乱Javaの構文
- 13. Java split()メソッドの混乱
- 14. Java同期の混乱
- 15. Java日付の混乱
- 16. Java whileループ混乱出力
- 17. 少し混乱(ResultSets、OracleDB、JAVA)
- 18. Beam java SDK、Java文法の混乱
- 19. C++ - 演算子の混乱の混乱
- 20. Javaの配列の宣言の混乱
- 21. のJavaのジェネリック型パラメータの混乱
- 22. 事業部の混乱混乱
- 23. 春のセキュリティJava構成の混乱
- 24. Javaのジェネリックについての混乱
- 25. JavaのpassByValueまたはReferenceの混乱
- 26. データ型のJava宣言混乱
- 27. Java継承:静的変数の混乱
- 28. mongodb java driverについての混乱
- 29. XMLとJava ...値とインデックスの混乱?
- 30. ソート済みセットとの混乱Java
import java.awt。*が自動的にjava.awt.eventもインポートするのは本当ですか? –
いいえ - それはJesperの指摘でした。 import java.awt。*;パッケージが正確にjava.awtであるすべてのクラスをインポートします。パッケージがjava.awtで始まるクラスはインポートされません。 – Sbodd