1

我想创建一个 java.util.Map 的实现,它只将 String 作为键和值。

我尝试了几件事

abstract class BaseMap<String,String> implements Map<K,V>

这给出了一个编译错误mebe,因为我正在实现接口并且没有满足键和值的完整定义

然后我尝试扩展接口来定义类型,它也不允许我这样做

public interface IBaseMap<String, String> extends Map<K, V>

它仍然给出错误“类型参数字符串正在隐藏 java.lang.String”

请帮忙,提前谢谢

4

2 回答 2

9

您需要在扩展泛型接口时提供具体类型,例如:

abstract class StringToStringMap implements Map<String, String> {
   // ...
}

或者如果你想扩展Map<K, v>接口,那么:

interface IBaseMap extends Map<String, String> {
   // ...       
}
于 2013-09-11T16:48:37.237 回答
1

你真的需要在这里继承吗?你真的应该避免像这样使用它。您可以以更好的方式使用组合:

class CustomMap<K extends String, V extends String> {
    private Map<K, V> map;

    public Map<K, V> getMap() {
        return map;
    }
}

现在,您可以CustomMap仅将 with实例String化为类型参数,该参数最终用作封闭的键和值Map


事实上,根本不需要像@TedHopp 在评论中指定的那样使类通用。只需附上一个Map<String, String>

class CustomMap {
    private Map<String, String> map;
}
于 2013-09-11T16:49:22.780 回答