- - PR -
インスタンスの動的生成について
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-09-10 23:00
なるほど! と思ったんですがコレだとインスタンスの参照名は何になっているのでしょうか? それともコレで「打ち込んだ名前」が参照名になっているのでしょうか? addとなっていますがputと違うのですか?質問ばかりですみません… | ||||
|
投稿日時: 2004-09-11 10:51
検討違いだったらすみません。
map.put("a",new A()); map.put("b",new A()); のようにしてmapに追加して、インスタンスを使いたい時だけ A b=(A)map.get("b"); のように生成する使い方ではだめなのでしょうか。 | ||||
|
投稿日時: 2004-09-11 13:32
目指されている事がいまひとつ理解できてないのですが、『オブジェクトを(名前が入力されるたびに)動的に生成してあとで名前で引っ張ってきたい』ということかなぁと思って、Mapに放り込む云々の書き込みをしました。 もしそれでいいのであれば、aaさんの書き込み通りでいいと思います。 ただその場合、同じ名前を入力されたらどうするかとか、仕様を決める必要はあると思いますが。 あと、Mapなどの動作が知りたければ、J2SEのAPIドキュメント見たほうが手っ取り早いですよ。 [ メッセージ編集済み 編集者: Odakaz 編集日時 2004-09-11 13:38 ] | ||||
|
投稿日時: 2004-09-11 13:42
確かにデータだけ格納しておいて必要な時にだけ作ればいいですね。盲点でした(;^_^A
で、以下の様に作ってみたのですが結果が何か変ですね… コレでしっかりと入っているのでしょうか? class A{ String name; int ID; A(String name,int ID){ this.name= name; this.ID= ID; } } static int count_id = 0;//データ個数カウント Object[] mss = {"What is class name ?"}; count_id++; String classname = JOptionPane.showInputDialog(panel,mss); map.put(classname,new A(classname,count_id)); A b = (A)map.get(classname); System.out.println(b.name + b.ID); System.out.println("--------------------------------"); System.out.println(map); System.out.println("-------------------------------"); <結果> siro1 -------------------------------- {siro=Test$A@3cc262} ------------------------------- ron2 -------------------------------- {ron=Test$A@1be16f5} ------------------------------- kozima3 -------------------------------- {kozima=Aest$A@11c2b67} ------------------------------- 入れたデータを上書きしてしまっているのでしょうか? それともそもそもデータの表示方法が違うのでしょうか? | ||||
|
投稿日時: 2004-09-11 14:13
返信ありがとうございますm(_ _)m イメージ的には上記の様な感じです。Mapはキー1つにつき値を1つ保存するみたいな 事が書いてあった為、値をclassの形にして多くのデータを保存しようと考えました。 保存したデータを変える時にインスタンスを生成し変更後また投げ込めばいいかなぁと思ったんですが…(;^_^ | ||||
|
投稿日時: 2004-09-12 12:24
以下の部分のコードはいったいどこに書いてあるのですか?
mapオブジェクトはどこで生成しているのですか? 省略するのはいいですが、せめて必要な情報がわかる程度にしてください。
| ||||
|
投稿日時: 2004-09-12 12:52
省略し過ぎましたね…すみません。以下が試行中のコードです。
class A{ String name; int ID; A(String name,int ID){ this.name= name; this.ID= ID; } } public class Test { public static void main(String[] args) { int count_id = 0; JPanel panel = new JPanel(); Map a = new TreeMap(); Object[] mss = {"What is class name ?"}; String classname = JOptionPane.showInputDialog(panel,mss); map.put(classname,new A(classname,count_id)); A b = (A)map.get(classname); System.out.println(b.name + b.ID); System.out.println("--------------------------------"); System.out.println(map); System.out.println("-------------------------------"); } } <結果> siro0 -------------------------------- {siro=Test@17e121c} ------------------------------- count_idはのちのちstaticで宣言して個数をカウントする為に用いて 上記のコードはpaintメソッドをオーバーライドして何個も追加できる 仕様にするつもりです。上手くMapに入っていないみたいですが何が いけないのでしょうか? | ||||
|
投稿日時: 2004-09-12 12:57
修正します。Mapの参照名はaです。 | ||||
