- - PR -
同じファイルの中に定義しているclass同士の交差参照問題
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-08-18 02:31
こんにちは
さっそくですが、 同じjavaファイルの中に下に示したように二つclassを定義されているとします。 public class XXX { XXX() {QQQ q;} } class QQQ { QQQ(XXX x) {...} } すると、 コンパイルしたら、 XXX1.class XXX2.class : : QQQ1.class QQQ2.class : のような番号付きのclassが複数生成され、実行する時に異なる番号のclassの中のメソッドが callされ、不都合を来します。 こんなJAVAにちょっとがっかりしています。 どうすればいいでしょうか、アドバイスをいただきたいです。 どうぞよろしくお願い致します。 | ||||
|
投稿日時: 2002-08-18 13:33
上記のコードをJDK1.3.1_04及びJDK1.4.0_01のjavacでコンパイルしたところ XXX.classとQQQ.classのみが生成され、issekiさんの遭遇されたような状況 にはなりませんでした。 issekiさんの遭遇された状況を再現するには開発環境の情報及び 再現コードの公開が必須です。 クラス間での相互参照については http://java-house.jp/ml/ で過去の記事を"相互参照"で検索すると情報が得られます。 [ メッセージ編集済み 編集者: asip 編集日時 2002-08-18 14:08 ] | ||||
|
投稿日時: 2002-08-19 13:30
asipさん
ご返答ありがとうございます。 私も初めて、勝手に番号を付けるjavcの動きに遭遇するのです。 ソースは二本があってともに長い、疑うところも見当つけていないので、 ソースを出すのを控えさせていただきます。 とりあえず、いろいろ探ってみないです。 またよろしくお願い致します。 | ||||
|
投稿日時: 2002-08-19 15:36
> コンパイルしたら、
> XXX1.class > XXX2.class > : > : > QQQ1.class > QQQ2.class XXX$1.class XXX$2.class : : QQQ$1.class QQQ$2.class ではないですか? | ||||
|
投稿日時: 2002-08-19 16:33
こんにちは。
私も最初のコードでなぜそういったクラスファイルができるのか不思議に思ったのですが、 もっと長いソースのようなので、単に無名内部クラスが含まれてるのではないかと思います。 swingとかじゃないですか? | ||||
|
投稿日時: 2002-08-20 18:48
t-wataさま、ひろさま
お世話になっております。 返事が遅れて申し訳御座いません。 t-wataさまWrote: >QQQ$1.class >QQQ$2.class >ではないですか? その通りです。m(__m ひろさまWrote: >単に無名内部クラスが含まれてるのではないかと思います。 >swingとかじゃないですか? 鋭ーい! 下のようなコードが存在しています。 addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent evt) { setCursor(new java.awt.Cursor(Cursor.HAND_CURSOR)); // canvas1MouseEntered(evt); } } ); addMouseListener(new MouseAdapter() { public void mouseExited(MouseEvent evt) { setCursor(new java.awt.Cursor(Cursor.DEFAULT_CURSOR)); } } ); これで、..$1.class, ..$2.class が多数存在しても正常ということでしょうか。 よろしくお願い致します。 | ||||
|
投稿日時: 2002-08-21 09:15
> これで、..$1.class, ..$2.class が多数存在しても正常ということでしょうか。
正常です。なので、最初の質問にあった、 > 不都合を来します。 は、無名インナークラスのせいではないはずです。 | ||||
|
投稿日時: 2002-08-21 13:33
t-wataさん
ありがとう御座います。 isseki: >実行する時に異なる番号のclassの中のメソッドが >callされ、不都合を来します。 俺の勘が間違ったのです。 さらに調べます。 改めて御礼を申し上げます。 また宜しくね。 | ||||
