簡體   English   中英

使用鍵作為通用接口的HashMap

[英]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.

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