将Map <t>转换为派生类</t>

时间:2011-01-29 16:42:45

标签: java

我有以下课程:

class DerivedMap extends Hashmap<String,Object>
{}

我使用的是因为我想为这种类型的地图实现一些自定义操作。

然后我将这个类的实例传递给想要Map的外部api,这自然很好用。

问题是我还将Map实例作为api的返回值。由于真实对象隐藏在api选择的界面后面,我知道我不能只是投射它。

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

感谢。

1 个答案:

答案 0 :(得分:4)

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

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

然后从DerivedMap创建一个Map,如下所示:

derivedMap = new DerivedMap(otherMap);

super(map)调用HashMap构造函数,该构造函数将参数映射的所有映射复制到新创建的映射。来自文档:

  

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