与其用文字来尝试,我只举一个例子:
我有一个 Animal 类,以及一个扩展 Animal 的 Dog、Fish、Cat 等。
我有三种不同的方法,它们返回Map<String,List<Dog>>, Map<String,List<Fish>>, Map<String,List<Cat>>
. 我们将它们称为 getDogMap、getCatMap 和 getFishMap。
我正在编写一个通用方法,它根据各种参数调用这些方法之一。这是我期望被允许做的事情:
public void <A extends Animal> doSomething(){
Map<String,List<A>> someMap;
if(someCondition){
someMap = getDogMap();
}else if(anotherCondition){
someMap = getFishMap();
}else{
someMap = getCatMap():
}
}
或者至少,与演员 alasomeMap = (Map<String,List<Dog>>) getDogMap();
但是,这不起作用。Eclipse 告诉我"Type mismatch: cannot convert from Map<String,List<Dog>> to Map<String,List<A>>"
如果我尝试强制转换,它会告诉我"Cannot cast from Map<STring,List<Dog>> to Map<String,List<A>>"
。
我究竟做错了什么?