2012-10-11 93 views
0

嗨我有一個關於java的奇怪問題。我將忽略背景信息以免複雜化。如果你有一個名爲fname的變量。並說你有一個函數返回一個字符串是「fname」。有沒有辦法通過字符串「fname」來引用標識符fname。這個想法就像「fname」.toIdentifier()= value,但很明顯toIdentifier不是一個真正的方法。你可以從字符串引用一個java變量嗎?

我想有點背景蟎幫助。基本上我有一個字符串「fname」映射到另一個字符串「fname的值」。我想要一種方法快速地從地圖上說出變量fname =鍵「fname」的值。我通過在表單中​​迭代cookie映射來獲取關鍵值對。我不想做「如果key =」fname「將fname設置爲」fname的值「,因爲我需要設置大量變量,我寧願做類似currentkey.toIdentifer = thevalue 。奇怪的問題,也許我俯瞰一個更簡單的方法來處理這個。

+0

[yes is possible](http://stackoverflow.com/questions/6629995/test-if-a-class-contains-an-instance-variable-based-on-its-name),但它的測試,有幾個好的方法,這個問題談論錯誤的設計 – mKorbel

+0

看來你只是想要一個地圖:http://docs.oracle.com/javase/6/docs/api/java/util/Map.html _OR_你可能想看看反射......你或許想考慮一下你的設計。 – jahroy

+0

我同意設計可能有缺陷,但我從來沒有想過要做那樣的事情。 – Yoshi

回答

1

在你所描述的是什麼反思的方式用於:

您可以按名稱引用對象的字段和方法

然而,大多數時候,當人們問這樣的問題,他們是更好的重新工作的設計和考慮,例如地圖數據結構的優勢,解決他們的問題。


下面是一些代碼,顯示瞭如何從兩個數組創建Map

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); 
} 

這裏給JavaDoc for Map的鏈接。

2

你爲什麼不只是用這個簡單的HashMap?

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

String value = mapping.get(key); //key could be "fname" 
+0

我很感謝你的回答。我目前正在使用hashmap。我想我應該使用contains(),然後設置fname,而不是迭代整個地圖,因爲我知道我期待的cookie。但是,我會接受這一點。謝謝你的迅速回復!我想我準備在現實中有很多很多的餅乾,這可能是非常不尋常的。更好的主意是一個cookie,並根據用戶名cookie從數據庫中提取其餘信息。 – Yoshi

+0

Map有一個名爲_containsKey_的方法:http://docs.oracle.com/javase/6/docs/api/java/util/Map.html#containsKey%28java.lang.Object%29 – jahroy

相關問題