• ベストアンサー

JAVA Applet for文でのまわし方

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

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.3

まあ一応 nonakada 氏の書いたようにリフレクションを使えばできない訳ではありませんが、普通はこんなことでわざわざこういう裏技のようなやり方を使うことはしません。 確かにクラスの名前が連番になっているのでループを使って簡略化できそうだと思われるのも解るのですが、実際にはこれはたまたま「人間にとって」各クラスの名前が似ているというだけで、「コンピュータにとっては」単にたくさんクラスがあるというだけでしかないのです。 従って、ここではループを使わずに一つ一つやるべきだと私は思います。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1274344
ikepan
質問者

お礼

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

その他の回答 (2)

noname#61448
noname#61448
回答No.2

私も自信はありませんが bt[i].addActionListener(Class.forName("testActionListener" + i).newInstance()); じゃできないですかね? もちろんfor文で・・・

ikepan
質問者

お礼

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

回答No.1

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

ikepan
質問者

お礼

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

関連するQ&A

専門家に質問してみよう