[英]How to declare HashMap with different types?
我有一個函數,聲明如下:
public synchronized void update(HashMap<String, Comparable> data)
data包含字符串和整數,但Comparable會發出警告
Comparable is a raw type. References to generic type Comparable<T> should be
parameterized
由於我沒有過多地發現警告,問題是,是否有正確的方法,我不想壓制警告。
預先感謝! 馬庫斯
這應該取悅編譯器:
public synchronized void update(HashMap<String, Comparable<Object>> data)
Object
是String
和Integer
最具體的超類型。 您的代碼還有改進的空間。 首先依賴Map
接口,而不是具體的HashMap
實現。 其次,如果您不需要Comparable
功能,只需使用Map<String, Object>
。 最后但並非最不重要的是,避免使用多類型集合並且更喜歡強類型。
“ [...]數據包含字符串和整數[...] ” - 如果它只是從String
到Integer
的映射:
public synchronized void update(HashMap<String, Integer> data)
首先,您不應該在簽名中堅持使用HashMap
。 為什么不只是一張Map
? 其次,您應該允許map值類型為實現 Comparable
任何內容。 第三, Comparable
本身可以使用無界通配符進行參數化:
void update(Map<String, ? extends Comparable<?>> data)
現在,您可以使用HashMap<String, Integer>
, TreeMap<String, String>
或SortedMap<String, Comparable<?>>
任何一個來調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.