I have a method (let’s call it doSomething) which takes in a Map<String,Object> and I want to pass in a Map<String,Foo> (Foo extends Object, of course). When I compile, it says that doSomething cannot be applied to the given types. Here is my code:
public class FooMapChoo {
private Map<String, Foo> map;
public void doSomething(Map<String,Object>) {
}
public static void main(String...args) {
doSomething(map);
}
}
Compiler output:
method doSomething in class FooMapChoo cannot be applied to given types;
doSomething(map);
^
required: Map<String,Object>
found: Map<String,Foo>
It seems to me that Foo should be polymorphically cast to Object. I’ve also tried casting map to Map<String,Object>, which just tells me “inconvertible types”. What can I do to fix the polymorphism problem?
You need to use wildcards