簡體   English   中英

如何初始化使用另一個地圖作為值的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>>());

我想初始化一個線程安全的地圖。 首先,我嘗試了上面的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()返回委托給其參數的另一個Map實現,因此您需要將字段類型更改為Map而不是EnumMap

private static Map<Edition, ListMultimap<KeyClass, ValueClass>> valueByKeyPerEdition =
        Collections.synchronizedMap(new EnumMap<>(Edition.class));

請注意,同步外部映射並不能確保其內容的線程安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM