Java中的特定类而不是泛型

时间:2014-11-15 20:10:20

标签: java class generics hashmap

如何使用特定类扩展HashMap。

public class TestMap<K, V> extends HashMap<K, V>

我希望V成为一个整数。编写整数而不是V覆盖整数类并在使用整数时导致错误(Integer i = 1不起作用)。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

参数化扩展类并仅声明键的类型:

class IntegerMap<K> extends HashMap<K, Integer> {}

然后你可以这样做:

IntegerMap<String> integerByString = new IntegerMap<String>();
integerByString.put("0", 0);
integerByString.put("1", 1);

作为旁注,如果您实际上是在扩展JDK集合类,那么它通常不被认为是一种好的样式。

通常你会编写一个从外面控制Map的类:

class MapController<K> {
    Map<K, Integer> theMap;
}

或者也许是以某种方式准备它的方法:

static <K> Map<K, Integer> prepMap() {
    Map<K, Integer> theMap = new HashMap<>();
    return theMap;
}