有没有办法以这样的方式声明Map属性,以便根据键的类来约束映射到某个键的值的类型?
我需要一个将WrapperA键与WrapperB值相关联的Map,其中两个类都使用扩展Contained类的类型进行参数化。
class WrapperA<T extends Contained>
class WrapperB<T extends Contained>
Map<WrapperA, WrapperB> map;
但是,我想强制执行地图上的条目以使用相同的类进行参数化。请注意,地图可以使用不同类型托管条目。例如,WrapperA<Description>
- &gt; WrapperB<Description>
和WrapperA<Name>
- &gt; WrapperB<Name>
,假设描述和名称扩展为包含。
简而言之,我怎样才能以类似下面的类的方式声明Map?
class Store {
HashMap<WrapperA<? extends Contained>, WrapperB<? extends Contained>> map = new HashMap<>();
public <T extends Contained> void put(WrapperA<T> w, WrapperB<T> rs) {
map.put(w, rs);
}
public <T extends Contained> WrapperB<T> get(WrapperA<T> w) {
return (WrapperB<T>) map.get(w);
}
}