java - 转换 HashMap

标签 java collections casting hashmap

我正在尝试对 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/

相关文章:

java - fragment -E/RecyclerView : No adapter attached; skipping layout

Java 迭代器 nextIndex 指针

c++ - 为什么允许从对象到引用的隐式转换?

Java - instanceof 与运行时泛型类的转换 :

Java无法反序列化JSON

java - 如何在使用 Netty 运行的 Jersey 中获取 SSL 信息(对等证书)?

java - 如何删除 JLabel 上的边框?

C#.First() 与 [0]

java - ListUtils Subtract 未按预期工作

c# - 如何在 C# 中转换存储在 session 中的字典?