我有字符串和字符串数组的映射:
private static Map cacheTimeStamp = new HashMap<String, String[]>();
现在我如何得到这个Map的值,我想将String []的数组返回给调用函数,尝试使用cacheTimeStamp.get("stringKey")
但是它返回了对象,我希望得到字符串数组。< / p>
答案 0 :(得分:3)
像这样定义您的地图:
private static Map<String, String[]> cacheTimeStamp = new HashMap<String, String[]>();
问题是您在没有指定地图的键和值对象类型的情况下定义了打开的地图。这本质上是java.lang.Object
类型的键和类型java.lang.Object
的值。
答案 1 :(得分:0)
您没有定义泛型。
Map<String, String[]> cacheTimeStamp = new HashMap<String, String[]>();
实际上确实会返回一个字符串数组,但严格来说,您不知道何时不在定义中包含泛型。这就是IDE告诉你它将是一个Object的原因。确保你要注意数组是一个对象。
答案 2 :(得分:0)
您实际上获得了String[]
。
我看到两个选项:
将返回值强制转换为String []:
String [] myEntry =(String [])cacheTimeStamp.get(“stringKey”);
(我的偏好)向地图添加类型参数:
private static Map cacheTimeStamp = new HashMap(); // ... String [] myEntry = cacheTimeStamp.get(“stringKey”);