重複の可能性:
Java インポートの混乱
Play フレームワークのドキュメントを読んだときに、これを見つけました。
import play.*;
import play.mvc.*;
最初の行自体で、play パッケージの下にあるすべてのクラスをインポートしています。次に、2行目の使用は何ですか。このリンクを確認してください。「アプリケーション エラー ページの提供」セクションに移動します。
インポートの概念が間違っている場合は修正してください。
重複の可能性:
Java インポートの混乱
Play フレームワークのドキュメントを読んだときに、これを見つけました。
import play.*;
import play.mvc.*;
最初の行自体で、play パッケージの下にあるすべてのクラスをインポートしています。次に、2行目の使用は何ですか。このリンクを確認してください。「アプリケーション エラー ページの提供」セクションに移動します。
インポートの概念が間違っている場合は修正してください。
輸入の概念が間違っている場合は訂正してください。
あなたは。
このようなもの:
import foo.bar.*;
foo.bar
パッケージからタイプのみをインポートします。などの「サブパッケージ」からはインポートされませんfoo.bar.baz
。
これをテストするのは非常に簡単です:
import java.util.*;
class Test {
public void foo() {
Pattern p = null;
}
}
それはコンパイルされませんが、追加した場合:
import java.util.regex.*;
その後、それはなります。
Javaは、パッケージを階層を形成するものとは実際には考えていません。私たちは人間として行いますが、Java言語に関する限り、パッケージjava.util
とjava.util.regex
は完全に無関係です。
import play.*;
内のすべてのタイプをインポートします。サブパッケージ内にあるものを除いて。
import play.mvc.*;
パッケージ内のすべてのタイプをインポートします。mvc
これは、内のサブパッケージですplay
。
この回答も役立ちます:Javaインポートの混乱
最初の行は、同じレベルの play.* のすべてのクラス、列挙型、およびインターフェースをインポートしますが、サブパッケージはインポートしません。したがって、2 行目が必要です。
それらは異なるパッケージです。Java にはサブパッケージの概念はありません。play.* によってインポートされたクラスは、work.* の下にある可能性もあります。JVM の観点からは、play.mvc.* の下のクラスとは何の関係もありません。命名規則は、パッケージが関連していることを知るための便宜上のものであり、play.mvc はおそらく play に大きく依存しています。