我想創建一個泛型類ExtendedMap
只接受Strings
如何創建特定的泛型類?
我嘗試下面的代碼,但它給我的錯誤:
The method put(K, V) of type ExtendedMap must override or implement a supertype method
class ExtendedMap<K, V> extends HashMap<String, String> {
private Map<K, Collection<V>> map = new HashMap<>();
@Override
public void put(K key, V value) {
if (map.get(key) == null)
map.put(key, new ArrayList<V>());
map.get(key).add(value);
}
}
正如在回答表明我已經更新了代碼,但現在它不編譯
你聲明'ExtendedMap'是'HashMap的子類,這意味着它的鍵和值是字符串。但是你試圖重寫'put',以便它的鍵值是K和V.類型只是類型不正確。另外,你試圖改變返回類型,這是不允許的(除非返回類型是協變的)。 –
它看起來像你試圖將繼承與組合。你可能根本不想擴展'HashMap';而是擴展類似'AbstractMap>'。但是你仍然需要以類型正確的方式重寫這些方法。 –
你的類不應該同時包含* HashMap和* HashMap。選一個。 – Andreas