【问题标题】:Map with polymorphic generics具有多态泛型的映射
【发布时间】:2012-07-23 00:08:45
【问题描述】:

我有一个方法(我们称之为doSomething),它接收Map<String,Object>,我想传入Map<String,Foo>(当然,Foo 扩展了对象)。当我编译时,它说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&lt;String,Object&gt;,这只是告诉我“不可转换的类型”。如何解决多态性问题?

【问题讨论】:

标签: java generics map casting polymorphism


【解决方案1】:

你需要使用通配符

Map<String, ? extends Object>

【讨论】:

  • Map&lt;String, ?&gt; 可以。 +1
  • 真正的男人明确扩展对象:)
猜你喜欢
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 2023-04-10
  • 1970-01-01
  • 2019-02-26
  • 2017-03-28
  • 2015-11-12
相关资源
最近更新 更多