我想创建java.util.Map的实现,它只将String作为键和值。
我尝试了几件事
abstract class BaseMap<String,String> implements Map<K,V>
这给出了编译错误,因为我正在实现接口而没有完成Key和Value的完整定义
然后我尝试扩展界面以定义类型,它确实让我也这样做
public interface IBaseMap<String, String> extends Map<K, V>
它仍然提供错误“类型参数String隐藏java.lang.String”
请提前帮助,请提供帮助
答案 0 :(得分:9)
您需要提供具体类型,同时扩展泛型接口,如:
abstract class StringToStringMap implements Map<String, String> {
// ...
}
或者如果你想扩展Map<K, v>
接口,那么:
interface IBaseMap extends Map<String, String> {
// ...
}
答案 1 :(得分:1)
你真的需要继承吗?你应该真的避免像这样使用它。您可以更好地使用合成:
class CustomMap<K extends String, V extends String> {
private Map<K, V> map;
public Map<K, V> getMap() {
return map;
}
}
现在,您可以使用CustomMap
作为类型参数来实例化String
,最终将其用作附加Map
的键和值。
事实上,根据@TedHopp在评论中的规定,根本不需要使该类具有通用性。只需附上Map<String, String>
:
class CustomMap {
private Map<String, String> map;
}