2008-11-18 67 views
5

如何在Java中執行此操作 - 將一個子類型集合傳遞給需要基類型集合的方法?下面Java泛型 - 將一個子類型集合傳遞給一個需要基類型集合的方法

的例子給出了:

The method foo(Map<String,List>) is not applicable for the arguments (Map<String,MyList>) 

我可以通過創建類型集合類層次實現 - 但有可能以其他方式?

public void testStackOverflow() { 

    class MyList extends AbstractList { 
     public Object get(int index) { 
      return null; 
     } 
     public int size() { 
      return 0; 
     }   
    }; 

    Map <String, List> baseColl = null; 
    Map <String, MyList> subColl = null; 

    foo (subColl);    
} 

private void foo (Map <String, List> in) {  
} 

編輯:從答案原來,這需要「界通配符」所以加入這個文本可搜索

回答

17

更改foo到:

private void foo(Map <String, ? extends List> in) { 
} 

這會限制你可以在做什麼foo,但這是合理的。您知道,您從地圖中獲取的任何值都將是一個列表,但您不知道要將哪種值放入地圖。

+0

謝謝!這正是解決方案:-) – horace 2008-11-18 10:19:56

相關問題