如何创建特定的泛型类?

时间:2017-09-24 06:22:01

标签: java generics

我想创建一个只接受ExtendedMap

的通用类型类Strings

我尝试了以下代码,但它给了我错误:

  

ExtendedMap类型的put(K,V)必须覆盖或实现   超类型方法

    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);
    }

}

正如在回答中所建议的,我已经更新了代码,但现在它没有编译

2 个答案:

答案 0 :(得分:1)

简单:省略类型变量。

class ExtendedMap extends HashMap<String, String>

您收到的警告不是语言规范规定的警告;我想这只是你的IDE试图确保你输入你的意思。但由于没有扩展String的类,因此类型变量中没有值:省略它们,并直接使用String

答案 1 :(得分:0)

ExtendedMap类需要扩展String类的某些类型的参数。但由于Stringfinal类,因此没有这样的类可以扩展它。

因此警告。

正如安迪所说,省略类型变量应该摆脱警告。