アプリ版:「スタンプのみでお礼する」機能のリリースについて

パッケージ化されたクラス(pacA.ClassA)から、無名パッケージ(ClassB)のクラスを参照できるのでしょうか。

状況を詳しく書きますと、
ClassB はコンパイル済みで、pacA.ClassA の中で ClassB を new しています。

pacA.ClassA をコンパイルしたいのですが、ClassB を import できません(コンパイルエラー)。

それとも、ClassB は import する必要がなく、単に私のコンパイルの仕方(classpathの通し方等)が悪かったのでしょうか。

どなたか教えて頂けませんか。

A 回答 (2件)

古いバージョンのコンパイラならば



package pacA;

import ClassB;

class ClassA {
  public ClassA() {
    ClassB b=new ClassB();
  }
}

とすれば、packA.ClassAから名無しパッケージの
ClassBを呼び出してコンパイル可能だったのです
けど、どうも最新のコンパイラでは出来なくなって
いるようですねぇ、、、実行は出来るようですが。

元々「このような呼び出しは推奨されない」って事だった
ので恐らくは「出来ないようにした」のではないかと。
もしかすると別の方法で実現できる可能性も在るかも
しれませんが、私にはチョット分かりません。

どうしてもというなら、古いJDKをダウンロードしてきて
試してみてはいかがでしょうか(JDK1.2なら出来るはず)
    • good
    • 0
この回答へのお礼

ようやく謎が解けました!
import ClassB;
のように書いている本があるのに、なぜ自分の場合はできないのだろうって思っていました。バージョンの違いだったんですね。
ご回答ありがとうございました。

お礼日時:2003/05/18 16:54

参考URLの8.の(後半)部分を参照してみてください。


JDK1.4からコンパイラが厳密になったため、パッケージ名をつけないクラスはインポートできないようになっています。
つまるところ
「パッケージ名をつけないクラスは、使い捨てで、その場限りの使い方しかできないものだ。」というわけです。

他から使用したいのであればパッケージ名をつけるべきなようです。

参考URL:http://java.sun.com/j2se/1.4/ja/compatibility.html
    • good
    • 0
この回答へのお礼

参考URLのほう拝見させて頂きました。
コンパイラの仕様が変わっていたとは・・。
謎が解けてスッキリしました。
どうもありがとうございました。

お礼日時:2003/05/18 16:57

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