0

こんにちは私はJavaについて奇妙な質問があります。複雑にならないように、背景情報は省略します。fnameという名前の変数がある場合。そして、「fname」である文字列を返す関数があるとします。文字列「fname」を介して識別子fnameを参照すると言う方法はありますか?アイデアは「fname」.toIdentifier()= valueのようなものになりますが、明らかにtoIdentifierは実際のメソッドではありません。

少し背景ダニの助けになると思います。基本的に、文字列「fname」を別の文字列「fnameの値」にマップしています。そして、変数fname=マップからのキー「fname」の値をすばやく言う方法が必要です。フォーム内のCookieのマップを反復処理することで、キーと値のペアを取得しています。そして、「if key = "fname" set fname to "value of fname"」は実行したくありません。そのように設定する必要のある変数がたくさんあるためです。むしろ、currentkey.toIdentifer=thevalueのようなものを実行します。奇妙な質問かもしれませんが、これにアプローチするためのはるかに簡単な方法を見落としているのかもしれません。

4

2 に答える 2

2

これに単純なハッシュマップを使用してみませんか?

Map<String, String> mapping = new HashMap<String, String>();
mapping.put("fname", "someValue");
...

String value = mapping.get(key); //key could be "fname"
于 2012-10-11T06:30:36.780 に答える
1

ある意味で、リフレクションがどのように使用されるかを説明しています。

オブジェクトのフィールドとメソッドを名前で参照します。

ただし、ほとんどの場合、このような質問をするときは、デザインを作り直し、マップなどのデータ構造を利用して問題を解決したほうがよいでしょう。


2つの配列からマップを作成する方法を示すコードを次に示します。

String[] keyArray = { "one", "two", "three" };
String[] valArray = { "foo", "bar", "bazzz" };

// create a new HashMap that maps Strings to Strings

Map<String, String> exampleMap = new HashMap<String, String>();

// create a map from the two arrays above

for (int i = 0; i < keyArray.length; i++) {
    String theKey = keyArray[i];
    String theVal = valArray[i];
    exampleMap.put(theKey, theVal);
}

// print the contents of our new map

for (String loopKey : exampleMap.keySet()) {
    String loopVal = exampleMap.get(loopKey);
    System.out.println(loopKey + ": " + loopVal);
}

これがJavaDocforMapへのリンクです。

于 2012-10-11T06:53:35.163 に答える