web-dev-qa-db-ja.com

指定しない場合にクラスが配置されるデフォルトのパッケージは何ですか?

次のコードを持つMain.Javaという名前のファイルがあると仮定します。

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}

それは特定のパッケージに入れられていますか、(多分?)名前のないパッケージに入れられていますか?

ありがとう

21

名前付きパッケージにないクラスは、名前なしパッケージにあります。したがって、完全なクラス名はMainです。

このようなクラスは、リフレクションを介する場合を除いて、名前付きパッケージから 使用 にすることはできません。

JLSは次のように述べています。

名前のないパッケージは、主に小規模または一時的なアプリケーションを開発するとき、または開発を始めたばかりのときに便利なように、Java SEプラットフォームによって提供されます。

26
Lachlan Roche

Javaには名前空間がなく、パッケージがあります。はい、パッケージ宣言のないクラスは暗黙的に「 名前のないパッケージ 」の一部であり、「デフォルトパッケージ」とも呼ばれます。ただし、名前のないパッケージからクラスをインポートすることはできず、言語仕様では、名前のないパッケージのクラスを相互に表示するかどうか、および表示する方法について実装で異なるルールを明示的に許可しているため、通常、すべてのクラスを名前付きに配置することをお勧めします。実験コードを除くパッケージ。

6

[〜#〜] jls [〜#〜] によると、次のように呼ばれます。

7.4.2名前のないパッケージ

パッケージ宣言のないコンパイルユニットは、名前のないパッケージの一部です。

4
stacker