dポイントプレゼントキャンペーン実施中!

Javaの初学者です。

無名パッケージ内のクラスを、他のパッケージ中から呼びたいのですが、うまくいきません。

Test/src/Test.java
----
public class Test {
public int m1;
public Test() {
m1 = 1;
}
}
----
という既存のプロジェクトがあるとします。

このプロジェクト内のTest.javaを利用したいと考えたとき、例えば、
Test2/src/Test2.java
----
import Test;
public class Test2 {
public static void main(String[] args) {
Foo foo = new Foo();
System.out.println(foo.m1);
}
}
----
はうまくいきます。

ですが、Test2プロジェクトを
Test2/src/test2/Test2.java
----
package test2;
import Test;
public class Test2 {
public static void main(String[] args) {
Foo foo = new Foo();
System.out.println(foo.m1);
}
}
----
のようにするとうまくいきません。

package test2の中から、外の無名パッケージのTestクラスを使用するには、どのようにすればよいでしょうか?

どうぞよろしくお願いします。

A 回答 (2件)

デフォルトパッケージ内のクラスはインポート出来ません。



>Test2/src/Test2.java
>----
>import Test;
>public class Test2 {
>public static void main(String[] args) {
>Foo foo = new Foo();
>System.out.println(foo.m1);
>}
>}
>----

これって本当にコンパイルとおりますか?
当方の環境では、import宣言でエラーになります。
このコードの場合、同パッケージ内なのでインポートしなくてもTestクラスを参照することはできます。
実際はimport宣言していないのではないでしょうか。

リフレクションを使えばデフォルトパッケージ内のクラスを参照できるみたいですが、
素直にTestクラスをパッケージに入れたほうがいいのではないかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

サンプルコードは多少切り貼りしたところがあるので、このままでは動かなかったかもしれませんが、同等のコードはコンパイルできたようです。(import 部分が不要?)

素直にパッケージへ入れることを検討しようと思います。

お礼日時:2012/10/30 12:27

>>Javaの初学者です



というのであれば、コードを何とか動かすよりも、
まずはパッケージとクラスパスのことについて勉強してみるといいですよ。

これはjavaの基本であり最低スキルです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!