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

在某种程度上,您正在描述反射的用途:

您通过名称引用对象的字段和方法。

然而,大多数时候当人们提出这样的问题时,他们最好通过重新设计并利用像地图这样的数据结构来解决他们的问题。


下面是一些代码,展示了如何从两个数组创建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);
}

这是Map 的 JavaDoc的链接。

于 2012-10-11T06:53:35.163 回答