Typecast Map <string,string =“”> to Map <object,object =“”> </object,> </string,>

时间:2012-01-12 11:19:04

标签: java generics

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>

我该怎么做?我试过? extends Object但不知道如何使用它。

4 个答案:

答案 0 :(得分:6)

您可以使用

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

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

答案 1 :(得分:4)

你做不到。 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>

答案 2 :(得分:1)

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

OR

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

答案 3 :(得分:0)

您可以使用Object代替String

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

在迭代Map时,您可以使用Object的{​​{1}}方法进行转换。