アプリ版:「スタンプのみでお礼する」機能のリリースについて

作成するパネルの数とを引数に与えると、そのパネルを作成して表示するメソッドを作りたいのです。
下記のようにすると
"variable name method createPanelの宣言が重複しています"とエラーになってしまいます。
引数でもらってきた文字列を生成するパネルの名前にしたいのですが、なぜこれではいけないのですか?
どうしたらよいのですか?

例)
public void createPanel(String name) {
 Panel name = new Panel();
}

A 回答 (3件)

失礼しました。

#1では勘違いしていました。
やりたいことはわかりましたが、
変数名を実行時に変えるのは不可能です。

もし、オブジェクトを、Stringで管理するとすれば、
java.utilの中のHashtableやMapを使って、
キーと値のペアとして管理します。
Hashtable hashtable = new Hashtable
....
public void createPanel(String name) {
 Panel namePanel = new Panel();
hashtable.put(name, namePanel);
}
(ただ取り出すときに注意。キャストが必要。
Panel panel = (Panel)hashtable.get(name);のように)
    • good
    • 0
この回答へのお礼

たびたびのお答えありがとうございました。
例文読ませていただきました、今の私にはチト難しいですが、参考にさせていただきます。
いつも、いつも本当に感謝しています。
ありがとうございました。

お礼日時:2003/05/14 16:29

>例)


>public void createPanel(String name) {
> Panel name = new Panel();
>}

No.1の方の言う通り変数の名称は重複することは不可能です。

>>Panel namePanel = ...などとすればいいでしょう。
>これだと、namePanelという名前のパネルが作成されてし
>まいませんか?
変数の名前を状況に合せて変更するというのはおそらくですけど不可能ではないでしょうか・・・(私の知識不足かもしれませんが・・・)
インスタンスはどんな名前でも問題ないです。
publicとして使うんならこの名前を使用しますが。
Panelに名前をつけるとするなら以下のような感じです。

////////////////////////////////////////////////
public void createPanel(String name) {
//Panelインスタンスの生成をします。
 Panel namePanel = new Panel();
//生成インスタンスに引数の名前をセットします。
namePanel.setName(name) ;
}
////////////////////////////////////////////////

これでパネルに名前が付けられますがいかがでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
例のロジックまで記述していただき本当にわかりやすく、助かりました。

お礼日時:2003/05/14 16:26

String nameとPanel nameで変数名がかぶってます。


Panel namePanel = ...などとすればいいでしょう。
    • good
    • 0
この回答へのお礼

お答えありがとうございます。
>Panel namePanel = ...などとすればいいでしょう。
これだと、namePanelという名前のパネルが作成されてしまいませんか?

パネルの名前をせっかく引数(String name)をもらってきているのだからその名前を作成するパネルの名前にしたいのです。
このメソッドを呼ぶ側で引数に"pnl1"としたら、"pnl1"という名前のパネルをこのメソッドで作成したいのです。

お礼日時:2003/05/14 14:54

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