0

doSomething私はを取り入れるメソッド(それを呼びましょう)を持っていて、 (もちろん、Foo extends Object)Map<String,Object>を渡したいです。Map<String,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<String,Object>ポリモーフィズムの問題を解決するにはどうすればよいですか?

4

1 に答える 1

6

ワイルドカードを使用する必要があります

Map<String, ? extends Object>
于 2012-07-23T00:10:07.430 に答える