java如何初始化使用另一个映射作为值的EnumMap
private static EnumMap<Edition, ListMultimap<KeyClass, ValueClass>>
valueByKeyPerEdition = Collections.synchronizedMap(
new EnumMap<Edition, ListMultimap<KeyClass, KeyClass>>());
我想初始化一个映射的线程安全映射。首先,我尝试了上面的init函数,但它说no suitable constructor found for EnumMap
。然后我尝试添加Edition.class
,结果是new EnumMap<Edition, ListMultimap<KeyClass, KeyClass>>());
,它仍然不起作用。错误消息为incompatible types: no instance(s) of type variable(s) K,V exist so that Map<K,V> conforms to EnumMap<Edition, ListMultimap<KeyClass, ValueClass>>
有人能帮忙吗?提前谢谢!我知道泛型的基本原理,但对valueByKeyPerEdition
应该如何初始化感到困惑
# 1 楼答案
Collections.synchronizedMap()
返回一个不同的Map
实现,该实现委托给它的参数,因此需要将字段类型改为Map
,而不是EnumMap
:请注意,同步外部映射并不能确保其内容的线程安全