【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

JAVA Appletでボタンを押すと色々反応するプログラムを作っています。for文を使わず長々としたプログラムだとコンパイルでき実行できますが、for文を使って簡潔にまとめる表記の仕方がどうもよくわかりません。

/* リスナの登録 */
bt[0].addActionListener(new testActionListener0());
bt[1].addActionListener(new testActionListener1());
bt[2].addActionListener(new testActionListener2());
bt[3].addActionListener(new testActionListener3());
bt[4].addActionListener(new testActionListener4());
bt[5].addActionListener(new testActionListener5());
bt[6].addActionListener(new testActionListener6());
bt[7].addActionListener(new testActionListener7());
bt[8].addActionListener(new testActionListener8());

上記はfor文でまとめれると思うのですが、どのように表記すれば良いのかわかりません。
for文でくくって、
bt[i].addActionListener~~
とすればそれぞれbt[i]が反応するのはわかりますが、その後の、
~~(new testActionListener○());
の○の部分にiを入れる場合の表記の仕方がわかりません。もしくはiを入れる事はできないのでしょうか?
※このあとそれぞれのtestActionListener(0~8)のリスナクラスが呼び出されます。


説明が足りないのであれば回答の後、補足しますm(_ _)m

A 回答 (3件)

まあ一応 nonakada 氏の書いたようにリフレクションを使えばできない訳ではありませんが、普通はこんなことでわざわざこういう裏技のようなやり方を使うことはしません。



確かにクラスの名前が連番になっているのでループを使って簡略化できそうだと思われるのも解るのですが、実際にはこれはたまたま「人間にとって」各クラスの名前が似ているというだけで、「コンピュータにとっては」単にたくさんクラスがあるというだけでしかないのです。

従って、ここではループを使わずに一つ一つやるべきだと私は思います。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1274344
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
わかりやすい説明でとてもよく理解できました。for文を使わず一つ一つやってみようかと思います。

お礼日時:2006/06/16 15:49

私も自信はありませんが



bt[i].addActionListener(Class.forName("testActionListener" + i).newInstance());

じゃできないですかね?

もちろんfor文で・・・
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
上の通りためしてみましたが、コンパイルできませんでした。

お礼日時:2006/06/16 15:47

ちょっと自信はありませんができないと思いますよ

    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
Java初心者の私にとって、できる事とできない事がまだ区別がつかないので参考になりました。

お礼日時:2006/06/16 15:41

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