我正在尝试对 Hasmap 进行类型转换
我有这个hasmap:
Map<String, Object> requestargs = new Map<String, Object>();
另一边我有一个方法可以给我带来一个 HashMap :Map<String, Document>
MultipartForm form = MgnlContext.getWebContext().getPostedForm();
方法是getDocuments();
我需要将此方法的返回值放入我的 HashMap 中,如下所示:
requestargs = form.getDocuments();
但我不知道如何将此 Hasmap og (String,Document) 转换为 (String,Object)
谢谢
最佳答案
除非您可以使用通配符
Map<String, ? extends Object> requestargs
您需要将 map 复制到新 map 中:
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.
}
为了防止此问题发生,类型系统禁止此类分配。
通配符之所以有效,是因为它使得无法在 map 上调用 put
,因为无法知道哪些类型可以安全地放入 map 中。
关于java - 转换 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35934598/