- ベストアンサー
無名パッケージのクラス
パッケージ化されたクラス(pacA.ClassA)から、無名パッケージ(ClassB)のクラスを参照できるのでしょうか。 状況を詳しく書きますと、 ClassB はコンパイル済みで、pacA.ClassA の中で ClassB を new しています。 pacA.ClassA をコンパイルしたいのですが、ClassB を import できません(コンパイルエラー)。 それとも、ClassB は import する必要がなく、単に私のコンパイルの仕方(classpathの通し方等)が悪かったのでしょうか。 どなたか教えて頂けませんか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
古いバージョンのコンパイラならば package pacA; import ClassB; class ClassA { public ClassA() { ClassB b=new ClassB(); } } とすれば、packA.ClassAから名無しパッケージの ClassBを呼び出してコンパイル可能だったのです けど、どうも最新のコンパイラでは出来なくなって いるようですねぇ、、、実行は出来るようですが。 元々「このような呼び出しは推奨されない」って事だった ので恐らくは「出来ないようにした」のではないかと。 もしかすると別の方法で実現できる可能性も在るかも しれませんが、私にはチョット分かりません。 どうしてもというなら、古いJDKをダウンロードしてきて 試してみてはいかがでしょうか(JDK1.2なら出来るはず)
その他の回答 (1)
- sasadora
- ベストアンサー率68% (59/86)
参考URLの8.の(後半)部分を参照してみてください。 JDK1.4からコンパイラが厳密になったため、パッケージ名をつけないクラスはインポートできないようになっています。 つまるところ 「パッケージ名をつけないクラスは、使い捨てで、その場限りの使い方しかできないものだ。」というわけです。 他から使用したいのであればパッケージ名をつけるべきなようです。
お礼
参考URLのほう拝見させて頂きました。 コンパイラの仕様が変わっていたとは・・。 謎が解けてスッキリしました。 どうもありがとうございました。
お礼
ようやく謎が解けました! import ClassB; のように書いている本があるのに、なぜ自分の場合はできないのだろうって思っていました。バージョンの違いだったんですね。 ご回答ありがとうございました。