デフォルトパッケージにあるJavaのクラスをインポートすることは可能ですか?その場合、構文は何ですか?たとえば、
package foo.bar;
public class SomeClass {
// ...
1つのファイルに、あなたは書くことができます
package baz.fonz;
import foo.bar.SomeClass;
public class AnotherClass {
SomeClass sc = new SomeClass();
// ...
別のファイルに。しかし、SomeClass.Javaにパッケージ宣言が含まれていない場合はどうでしょうか? SomeClass
でAnotherClass
をどのように参照しますか?
デフォルトパッケージからクラスをインポートすることはできません。非常に小さなサンプルプログラムを除き、デフォルトパッケージの使用は避けてください。
Java言語仕様 から:
名前のないパッケージから型をインポートすると、コンパイル時エラーになります。
デフォルトパッケージのクラスにアクセスする唯一の方法は、デフォルトパッケージの別のクラスからです。その場合は、import
を気にせず、直接参照するだけです。
それは可能ではありません。
別の方法はリフレクションを使用することです:
Class.forName("SomeClass").getMethod("someMethod").invoke(null);
コンパイルエラーではありません!デフォルトパッケージは、デフォルトパッケージクラスにのみインポートできます。
別のパッケージでこれを行うと、コンパイルエラーになります。
他の人が言ったように、これは悪い習慣ですが、デフォルトパッケージを使用するサードパーティライブラリと統合する必要があるため選択肢がない場合は、デフォルトパッケージに独自のクラスを作成し、そのように他のクラス。デフォルトパッケージのクラスは基本的に単一の名前空間を共有するため、別のJARファイルに存在する場合でも、他のクラスにアクセスできます。 JARファイルがクラスパスにあることを確認してください。
クラスがデフォルトパッケージにない場合、このトリックは機能しません。