8

重複の可能性:
Java インポートの混乱

Play フレームワークのドキュメントを読んだときに、これを見つけました。

import play.*;
import play.mvc.*; 

最初の行自体で、play パッケージの下にあるすべてのクラスをインポートしています。次に、2行目の使用は何ですか。このリンクを確認してください。「アプリケーション エラー ページの提供」セクションに移動します。

インポートの概念が間違っている場合は修正してください。

4

4 に答える 4

18

輸入の概念が間違っている場合は訂正してください。

あなたは。

このようなもの:

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.utiljava.util.regexは完全に無関係です。

于 2012-12-06T07:26:46.503 に答える
2
import play.*;

内のすべてのタイプをインポートします。サブパッケージ内にあるものを除いて。

import play.mvc.*; 

パッケージ内のすべてのタイプをインポートします。mvcこれは、内のサブパッケージですplay

この回答も役立ちます:Javaインポートの混乱

于 2012-12-06T07:26:40.697 に答える
1

最初の行は、同じレベルの play.* のすべてのクラス、列挙型、およびインターフェースをインポートしますが、サブパッケージはインポートしません。したがって、2 行目が必要です。

于 2012-12-06T07:29:23.347 に答える
0

それらは異なるパッケージです。Java にはサブパッケージの概念はありません。play.* によってインポートされたクラスは、work.* の下にある可能性もあります。JVM の観点からは、play.mvc.* の下のクラスとは何の関係もありません。命名規則は、パッケージが関連していることを知るための便宜上のものであり、play.mvc はおそらく play に大きく依存しています。

于 2012-12-06T07:31:11.623 に答える