映射多态泛型

Las*_*007 0 java generics polymorphism casting map

我有一个方法(让我们称它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);
        }

    }
Run Code Online (Sandbox Code Playgroud)

编译器输出:

    method doSomething in class FooMapChoo cannot be applied to given types;
                    doSomething(map);
                    ^
      required: Map<String,Object>
      found: Map<String,Foo>
Run Code Online (Sandbox Code Playgroud)

在我看来,Foo应该多态地转换为Object.我也试着铸造mapMap<String,Object>,刚刚告诉我,"不可兑换的类型".我该怎么做才能解决多态问题?

Ant*_*ony 6

您需要使用通配符

Map<String, ? extends Object>
Run Code Online (Sandbox Code Playgroud)

  • 或者`Map <String,?>`会这样做.+1 (2认同)
  • 真正的男人明确扩展对象:) (2认同)