2014-10-03 65 views
0

我目前正在研究一些旧的遗留应用程序,并且必须使用Java 1.4,现在已经有EOL好几年了。我需要从地图中获取价值。我的地图看起来是这样的:从地图获取价值(使用Java 1.4)

Key  | Value 
--------------- 
String1 | int1 
String2 | String6 
String3 | Float1 
String4 | String7 
String5 | Object1 

我尝试以下,但我不断收到一个空

String myVal = (String) map.get(String2); 

是否有可能得到一个值,而不使用迭代器?

+1

如果你得到一个空值,那是因为你的地图不包含'myString'键。请注意,你已经显示它的方式,你有相同的关键5次......听起来不太可能。请展示一个简短但完整的程序来展示问题。 – 2014-10-03 14:30:31

+0

如果它不是一个String,那么你只会得到一个'ClassCastException'。 – EpicPandaForce 2014-10-03 14:31:05

+0

嗨,乔恩,我已经编辑了一个更清晰的解释问题。我不必担心类转换异常,因为这些键是常量。我知道我每次都得到什么。谢谢你的投入。 – Native 2014-10-03 14:47:50

回答

1

你应该得到你报告方式的价值,这是完全正确的:

String myVal = (String) map.get("myKey"); 

只要在地图里面有该密钥。

问题与您报告的地图方案一样,地图可能包含String,Float或其他值类型,因此直接将其转换为String是危险的。你应该检查值类型:

Object myValObj = map.get("myKey"); 
if (myValObj instanceof String) { 
    // Handle the string 
} else if (myValObj instanceof Float) { 
    // Handle the float 
} // .... 
+0

谢谢你的回答西蒙娜,事实证明我是在我的地图存储值为“”MyString“”而不是“MyString”。我想我应该多睡一会。 – Native 2014-10-03 14:39:22