web-dev-qa-db-ja.com

Javaのデフォルトパッケージにクラスをインポートする構文は何ですか?

デフォルトパッケージにあるJavaのクラスをインポートすることは可能ですか?その場合、構文は何ですか?たとえば、

package foo.bar;

public class SomeClass {
    // ...

1つのファイルに、あなたは書くことができます

package baz.fonz;

import foo.bar.SomeClass;

public class AnotherClass {
    SomeClass sc = new SomeClass();
    // ...

別のファイルに。しかし、SomeClass.Javaにパッケージ宣言が含まれていない場合はどうでしょうか? SomeClassAnotherClassをどのように参照しますか?

49
Pops

デフォルトパッケージからクラスをインポートすることはできません。非常に小さなサンプルプログラムを除き、デフォルトパッケージの使用は避けてください。

Java言語仕様 から:

名前のないパッケージから型をインポートすると、コンパイル時エラーになります。

100
Dan Dyer

デフォルトパッケージのクラスにアクセスする唯一の方法は、デフォルトパッケージの別のクラスからです。その場合は、importを気にせず、直接参照するだけです。

34
Dan

それは可能ではありません。

別の方法はリフレクションを使用することです:

 Class.forName("SomeClass").getMethod("someMethod").invoke(null);
12
OscarRyz

コンパイルエラーではありません!デフォルトパッケージは、デフォルトパッケージクラスにのみインポートできます。

別のパッケージでこれを行うと、コンパイルエラーになります。

3
vishal rajput

他の人が言ったように、これは悪い習慣ですが、デフォルトパッケージを使用するサードパーティライブラリと統合する必要があるため選択肢がない場合は、デフォルトパッケージに独自のクラスを作成し、そのように他のクラス。デフォルトパッケージのクラスは基本的に単一の名前空間を共有するため、別のJARファイルに存在する場合でも、他のクラスにアクセスできます。 JARファイルがクラスパスにあることを確認してください。

クラスがデフォルトパッケージにない場合、このトリックは機能しません。

1
Rob H