如何初始化使用另一个地图作为值的 EnumMap
How to init EnumMap which uses another map as value
private static EnumMap<Edition, ListMultimap<KeyClass, ValueClass>>
valueByKeyPerEdition = Collections.synchronizedMap(
new EnumMap<Edition, ListMultimap<KeyClass, KeyClass>>());
我想初始化一个线程安全的map map。首先,我尝试了上面的 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>>
.
有人能帮忙吗?提前致谢!我知道 Generic 的基础知识,但真的很困惑 valueByKeyPerEdition
应该如何初始化。
Collections.synchronizedMap()
returns 委托给其参数的不同 Map
实现,因此您需要将字段类型更改为 Map
而不是 EnumMap
:
private static Map<Edition, ListMultimap<KeyClass, ValueClass>> valueByKeyPerEdition =
Collections.synchronizedMap(new EnumMap<>(Edition.class));
请注意,同步外部地图并不能确保其内容的线程安全。
private static EnumMap<Edition, ListMultimap<KeyClass, ValueClass>>
valueByKeyPerEdition = Collections.synchronizedMap(
new EnumMap<Edition, ListMultimap<KeyClass, KeyClass>>());
我想初始化一个线程安全的map map。首先,我尝试了上面的 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>>
.
有人能帮忙吗?提前致谢!我知道 Generic 的基础知识,但真的很困惑 valueByKeyPerEdition
应该如何初始化。
Collections.synchronizedMap()
returns 委托给其参数的不同 Map
实现,因此您需要将字段类型更改为 Map
而不是 EnumMap
:
private static Map<Edition, ListMultimap<KeyClass, ValueClass>> valueByKeyPerEdition =
Collections.synchronizedMap(new EnumMap<>(Edition.class));
请注意,同步外部地图并不能确保其内容的线程安全。