java - Collections.synchronizedMap() 返回类转换异常,而法线贴图工作正常

标签 java collections

当我将 Collections.synchronizedMap( ) 转换为 HashMap 时,它返回类转换异常,但是当我将 Map 转换为 HashMap 时,它工作正常。

根据我的理解 Collections.synchronizedMap( ) 也会返回 map 。

那么为什么我会收到此异常。

如何克服它。

示例代码

 public class Main_1 {
  public static void main(String[] args) throws UnknownHostException, IOException {
    Map m = new HashMap();
    m.put("sachin", "sacjdeva");
     // Throws exception here 
    HashMap hm = (HashMap) Collections.synchronizedMap(m);
    //No exception
    HashMap hm = (HashMap)(m)
    System.out.println(hm);
   }
 }

好的,如果它的synchronizedMap 并抛出类转换异常,我可以将此SynchronizedMap 转换为HashMap。

最佳答案

Collections.synchronizedMap(m) 不会返回 HashMap,因此您无法将其转换为 HashMap。它返回一个 SynchronizedMap 实例。

您可以将其分配给 map :

Map smap = Collections.synchronizedMap(m);

在您的“法线 map ”示例中:

HashMap hm = (HashMap)(m);

不是“普通 map ”。不存在“法线 map ”这样的东西。

您可以在此处为其分配一个 HashMap 实例:

Map m = new HashMap();

这是您稍后可以将其转换为 HashMap 的唯一原因。

关于java - Collections.synchronizedMap() 返回类转换异常,而法线贴图工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33229389/

相关文章:

java - 运行 MatlabControl 时出现问题

java - 以编程方式创建一个新的 Xtext 项目

java - 大量 JTextField 的一键监听器

java - 哪种类型的数据结构最好?

vba - 将项目添加到 VBA/VB6 集合时出错

java - 如何更新每个循环中的数据而不是在 Android 中一次显示所有循环数据

java - 我的批量 jpg 缩放器适用于彩色图像,但灰度图像会被冲掉

java - 什么结构最适合 "Get first X elements with best priority"?

java - list.clone 优于 new ArrayList(originalist)

Java ArrayList 不兼容的类型