簡體   English   中英

如何用不同的類型聲明HashMap?

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

ObjectStringInteger最具體的超類型。 您的代碼還有改進的空間。 首先依賴Map接口,而不是具體的HashMap實現。 其次,如果您不需要Comparable功能,只需使用Map<String, Object> 最后但並非最不重要的是,避免使用多類型集合並且更喜歡強類型。

[...]數據包含字符串和整數[...] ” - 如果它只是從StringInteger的映射:

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.

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