我有一个Map
其键是通用类型Key<T>
的,值是类型的List<T>
。如果键是 的实例Key<String>
,则值必须是 a List<String>
,并且相同的规则适用于任何其他键值对。我尝试了以下方法,但无法编译:
Map<T, List<T>> map;
目前我必须用“部分”泛型声明它:
Map<Object, List> map;
我知道这很糟糕,但我目前没有更好的选择。在这种情况下可以使用泛型吗?
更新
也许我没有清楚地表达我的问题。我想要一张能够:
map.put(new Key<String>(), new ArrayList<String>());
map.put(new Key<Integer>(), new ArrayList<Integer>());
以下代码不应编译:
map.put(new Key<String>(), new ArrayList<Integer>());
键和值应该始终具有相同的泛型类型,而泛型类型可以是任何类型,显然扩展映射不符合我的要求。