2012-01-12 132 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>

相關問題