当我将 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/