带有泛型的java.util.Map实现

时间:2013-09-11 16:45:01

标签: java generics

我想创建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”

请提前帮助,请提供帮助

2 个答案:

答案 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;
}