2012-01-12 3 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>напечатанный материал Map <String, String> на карте <Object, Object>

Как я могу это сделать. Я пробовал ? extends Object, но не знаю, как его использовать.

+0

Вы можете напрямую использовать Map right ??? –

+0

Почему Map ? в конце концов ** String ** is ** Object ** – adatapost

+1

@AVD, потому что мне нужно передать объект функции, которая примет ее как Map . – Anand

ответ

6

Вы можете использовать

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

компилятор дает соответствующее предупреждение, но он компилирует.

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

ИЛИ

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

Или просто 'Карта '. «Расширение объекта» является своего рода подразумеваемым. –

+0

Да, Map может использоваться, поскольку каждый класс расширяет Object. – Reddy

0

Вместо литья, вы можете просто использовать Object вместо String:

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

Когда итерация Map, вы можете использовать .toString() метод Object «s, чтобы преобразовать ,

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>.

Смежные вопросы