我有以下课程:

class DerivedMap extends Hashmap<String,Object>
{}


之所以使用它,是因为我想为这种类型的地图实施一些自定义操作。

然后,我将该类的实例传递给需要Map的外部api,这自然可以很好地工作。

问题是我也从Map获得Map实例作为返回值。由于一个真实的对象隐藏在api选择的接口的后面,所以我知道我不能只进行转换。

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

谢谢。

最佳答案

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

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。

关于java - 将Map <T>转换为派生类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4838037/

10-11 20:25