- PR -

インスタンスの動的生成について

投稿者投稿内容
海豹711
会議室デビュー日: 2004/09/10
投稿数: 9
投稿日時: 2004-09-10 13:58
新たにインスタンスを作る時に

A clsName = new A();

様によくやりますが,下記の様にclsNameを使用者が打ち込み
clsNameが新たに入力される度にその名前でインスタンスを作りたいのですが
出来ないのでしょうか?

Object[] msg = {"What is class name ?"};
String clsName = JOptionPane.showInputDialog(panel,msg);
A clsName = new A();
//雰囲気ではこの3行をfor文で回せばいけそうなんですがねぇ…(;^_^A
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-09-10 14:20
Map使うんじゃだめなんですか?
mikann
会議室デビュー日: 2004/09/01
投稿数: 2
投稿日時: 2004-09-10 14:39
Class clazz = Class.forName(className);
Object a = clazz.newInstance();

ような方法はいかがでしょうか。
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2004-09-10 16:17

# ukさんとmikannさんで認識が違うようですね。。。(^^;

変えたいのは、
 インスタンス化するクラス
 インスタンス(への参照)の名前
どちらでしょう?

質問文を見ると後者のようですが。。。であればMapでukさんの
おっしゃるようにMapで実現できると思いますが。
海豹711
会議室デビュー日: 2004/09/10
投稿数: 9
投稿日時: 2004-09-10 18:32
インスタンス化するクラスは同一の物で多くのインスタンス(への参照)の名前を打ち込んで変えていきその度にインスタンス化して増やしたいです。
私自身先ほどまでforName()とnewInstance()で例外を使用して作ろうとしていたのですがどうも違うみたいですね…Mapを使用すれば出来るとの事ですがMapを使用した事が
無いのでなんとも言えないのですがlistやsetでも可能なのでしょうか?
Odakaz
ベテラン
会議室デビュー日: 2004/05/24
投稿数: 70
投稿日時: 2004-09-10 19:00
引用:

海豹711さんの書き込み (2004-09-10 18:32) より:
インスタンス化するクラスは同一の物で多くのインスタンス(への参照)の名前を打ち込んで変えていきその度にインスタンス化して増やしたいです。


インスタンス化そのものが問題なんではなく、インスタンスを名前で管理するようなイメージでしょうか?
であれば、打ち込んだ名前をキーにMapに放り込めばいいように思います。

[ メッセージ編集済み 編集者: Odakaz 編集日時 2004-09-10 19:16 ]
海豹711
会議室デビュー日: 2004/09/10
投稿数: 9
投稿日時: 2004-09-10 22:12
>打ち込んだ名前をキーにMapに放り込めばいいように思います。
打ち込んだ名前をキーとした場合、放り込む値は
クラスのインスタンス(オブジェクト?)になると言う事でしょうか?
それだと事前にインスタンスを作成する必要があるような…?
見当違いな事を言っていたらすみませんm(_ _)m
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-09-10 22:17
add("打ち込んだ名前", new A());

スキルアップ/キャリアアップ(JOB@IT)