[英]HashMap with key as generic interface
我有一個interface dest
和一些實現此接口的類:
class destImpl1 implements dest { ... }
class destImpl2 implements dest { ... }
然后,我有一個HashMap<dest,double> destHash
。 我想要的是像這樣實例化destHash
:
destHash = new HashMap<destImpl1,double>();
然后像這樣:
destHash = new HashMap<destImpl2,double>();
但是代碼無法編譯。 我在這里想念什么?
將destHash
聲明為:
HashMap<? extends dest, Double> destHash
這表示“ HashMap
,其中K
是具有上限dest
的未知類型”。
其原因是, Foo<Y>
不是的子類型Foo<X>
即使當Y
是的子類型X
。 但是Foo<? extends X>
Foo<? extends X>
表示Foo<T>
的所有可能的泛型類型調用的集合,其中type參數是X
的子類型。 有關更多詳細信息,請參見Java教程>上限通配符。
請注意,您需要使用包裝類型Double
而不是原始類型作為第二個類型參數。
注釋: 但是,如果執行此操作,則可能無法實際使用HashMap
因為您將無法在其中put
鍵和值。 這表明您的設計可能不正確(請參閱通配符使用准則 ) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.