我有一个方法(让我们称之为doSomething
),它接收Map<String,Object>
并且我想传入Map<String,Foo>
(当然,Foo extends Object)。编译时,它表示doSomething
无法应用于给定的类型。这是我的代码:
public class FooMapChoo {
private Map<String, Foo> map;
public void doSomething(Map<String,Object>) {
}
public static void main(String...args) {
doSomething(map);
}
}
编译器输出:
method doSomething in class FooMapChoo cannot be applied to given types;
doSomething(map);
^
required: Map<String,Object>
found: Map<String,Foo>
在我看来,Foo应该多态地转换为Object。我也尝试将map
投射到Map<String,Object>
,这只是告诉我“不可转换的类型”。我该怎么做才能解决多态问题?
答案 0 :(得分:6)
您需要使用通配符
Map<String, ? extends Object>