2013-04-09 66 views
1

我正在嘗試編寫一個方法,它接受MyInterface的任何子類作爲參數,但會出現語法錯誤。Java - 傳遞通用參數

public Map<String, List<T extends MyInterface>> makeMap(List<T extends MyInterface>) { 

    Map<String, List<T extends MyInterface>> myMap = ... 

    return myMap; 

} 

該語法無效。簽名給出錯誤「錯位的結構」。但是,這個想法是我可以通過MyInterface inn的任何子類。這可以在Java中完成嗎?怎麼樣?

回答

6

您正在混合聲明泛型類型和引用該泛型類型的概念。假設你想要的方法是通用的,聲明的返回類型前的泛型類型參數,然後稱其直率地T別處:

//  Declaration       ref    ref 
public <T extends MyInterface> Map<String, List<T>> makeMap(List<T>) { 
    //    ref 
    Map<String, List<T>> myMap = ... 

    return myMap; 

} 
+0

好了,夠簡單。完美的作品。謝謝。 – Jeremy 2013-04-09 19:57:38

3
public <T extends MyInterface> Map<String, List<T>> makeMap(List<T> myList) { 

更多關於通用方法here

我還注意到,在你原來的方法聲明,你沒有爲你的方法參數定義的變量。