映射多态泛型

时间:2012-07-23 00:08:45

标签: java generics map casting polymorphism

我有一个方法(让我们称之为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>,这只是告诉我“不可转换的类型”。我该怎么做才能解决多态问题?

1 个答案:

答案 0 :(得分:6)

您需要使用通配符

Map<String, ? extends Object>