2011-01-29 35 views
1

我有下面的类:转换地图<T>派生

class DerivedMap extends Hashmap<String,Object> 
{} 

我用,因为我想要实现此类型的地图的一些自定义操作。

然后我把这个类的实例传递给一个需要Map的外部API,这自然适用。

问题是我也从Map API获取Map实例作为返回值。由于真正的对象隐藏在api选择的界面后面,我知道我不能仅仅投射它。

那么,如何将Map转换为我的自定义DerivedMap?我必须手动复制所有的键/值吗?

谢谢。

+0

putAll()[和另外7个字符] – bestsss 2011-01-29 16:45:30

回答

4

您可以创建这样一个构造函数:

class DerivedMap extends HashMap<String, Object> { 
    public DerivedMap(Map<String, Object> map) { 
     super(map); 
    } 
} 

,然后从Map这样创建DerivedMap

derivedMap = new DerivedMap(otherMap); 

super(map)调用HashMap构造函数,拷贝参数的所有映射映射到新创建的地图。从文档:

构造一个新的HashMap具有与指定的Map相同的映射。

+0

啊。当然。非常感谢你。 – monoceres 2011-01-29 16:51:15