嗨,我有一个关于java的奇怪问题。我将省略背景信息,以免使其复杂化。如果你有一个名为fname的变量。并且假设你有一个函数返回一个名为“fname”的字符串。有没有办法说通过字符串“fname”引用标识符fname。这个想法就像“fname”.toIdentifier()= value,但显然toIdentifier并不是一个真正的方法。
我想有点背景螨有帮助。基本上我有一个字符串“fname”映射到另一个字符串“fname的值”。我想要一种方法来快速说出变量fname =来自地图的键“fname”的值。我通过迭代表单中的cookie映射获得键值对。而且我不想做“if key =”fname“将fname设置为”fname的值“,因为我有大量需要这样设置的变量。我宁愿做类似currentkey.toIdentifer = thevalue的事情。奇怪的问题也许我忽略了一种更简单的方法来解决这个问题。
答案 0 :(得分:2)
为什么不直接使用简单的hashmap?
Map<String, String> mapping = new HashMap<String, String>();
mapping.put("fname", "someValue");
...
String value = mapping.get(key); //key could be "fname"
答案 1 :(得分: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的链接。