2012-01-12 134 views
1
Map<String, String> fieldAttributes = new HashMap<String, String>(); 

fieldAttributes.put("a", "48"); 
fieldAttributes.put("b", ""); 
fieldAttributes.put("c", "4224"); 

现在我需要投Map<String, String>Map<Object, Object>类型转换地图<String,字符串>地图<对象,对象>

我怎样才能做到这一点。我试过? extends Object,但不知道如何使用它。

+0

你可以直接使用Map right ??? – 2012-01-12 11:22:30

+0

为什么地图<对象,对象>?毕竟** String **是** Object ** – adatapost 2012-01-12 11:22:35

+1

@AVD因为我需要将对象提供给一个函数,该函数仅将它作为Map 。 – Anand 2012-01-12 11:27:28

回答

6

您可以使用

Map<Object, Object> properties = (Map) fieldAttributes; 

编译器给你一个适当的警告,但它编译。

1
Map<? extends Object, ? extends Object> genMap = fieldAttributes; 

OR

Map<Object, Object> gMap = (Map)fieldAttributes; 
+2

或者只是'Map '。 “扩展对象”是一种暗示。 – 2012-01-12 11:27:03

+0

是的,可以使用Map 作为每个类扩展Object。 – Reddy 2012-01-12 12:09:25

0

相反铸造的,你可以只使用Object,而不是String

Map<Object, Object> fieldAttributes = new HashMap<Object, Object>(); 
fieldAttributes.put("a", "48"); 
fieldAttributes.put("b", ""); 
fieldAttributes.put("c", "4224"); 

当迭代Map,你可以使用Object.toString()方法改造。

4

你不能。 A Map<String, String>不是Map<Object, Object>。如果是这样,你可以做

Map<String, String> map = new HashMap<String, String>(); 
Map<Object, Object> map2 = (Map<Object, Object>) map; 
map2.put(Integer.valueOf(2), new Object()); 

这将打破仿制药带来的类型安全。因此,你将不得不使用原始地图,或使用Map<? extends Object, ? extends Object>

相关问题