![](/img/trans.png)
[英]How to create a generic type that only allow a specific class to extends/implements it
[英]How to create specific Generic type class?
我想创建一个只接受Strings
的通用类型类ExtendedMap
我尝试了以下代码,但它给了我错误:
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);
}
}
正如回答中所建议的,我已经更新了代码,但现在它没有编译
简单:省略类型变量。
class ExtendedMap extends HashMap<String, String>
您收到的警告不是语言规范所要求的; 我想这只是您的 IDE 试图确保您输入了您的意思。 但是由于没有扩展String
类,类型变量中没有值:省略它们,直接使用String
。
ExtendedMap
类需要扩展String
类的某种类型的参数。 但是由于String
是final
类,所以没有这样的类来扩展它。
因此警告。
正如安迪所说,省略类型变量应该消除警告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.