繁体   English   中英

投射HashMap

[英]Casting a HashMap

我正在尝试铸造Hasmap

我有这个hasmap:

 Map<String, Object> requestargs = new  Map<String, Object>();

另一方面,我有一个方法为我带来了以下哈希Map<String, Document>Map<String, Document>

MultipartForm form = MgnlContext.getWebContext().getPostedForm();

该方法是getDocuments();

我需要将此方法的返回值放入我的哈希图中,使其如下所示:

requestargs = form.getDocuments();

但是我不知道如何将Hasmap og(String,Document)转换为(String,Object)

谢谢

除非可以使用通配符

Map<String, ? extends Object> requestargs

您将需要将地图复制到新地图中:

requestargs = new HashMap<String, Object>(form.getDocuments());

这两种类型不直接相关。 如果您可以直接进行分配(或通过强制转换),则可以在地图中插入非Document类型的值,这将是类型不安全的:

Map<String, Document> docs = form.getDocuments();
Map<String, Object> requestargs = docs;  // not actually allowed
requestargs.put("Foo", new Object());
for (Document doc : docs.values()) {
  // doc isn't necessarily a Document! ClassCastExceptions abound.
}

为了防止发生此问题,类型系统禁止这种分配。

通配符之所以起作用,是因为它无法调用地图上的put ,因为无法知道可以安全地将哪些类型放入地图中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM