2011-03-11 122 views
0

我有一個關於java泛型的簡單問題。我如何構建一個泛型類? 我有這個類:構建泛型類

public class SearchResult<T extends Model> { 

    public List<T> results ; 

    public Integer count ; 

    public SearchResult(List<T> results, Integer count){ 
     this.results = results; 
     this.count = count ; 
    } 
} 

現在我想建立一個新的實例是信息搜索結果但後來當我做到這一點我得到一個錯誤。 SearchResult result = new SearchResult<MyModel>(myListOfMyModels, mycount);

+0

什麼是錯誤信息?你在哪裏聲明''? – Thilo 2011-03-11 04:53:19

+0

很多人編輯了問題中的原始問題......因此改變了問題的背景。 – msarchet 2011-03-11 04:55:56

+0

如果你看歷史,你會注意到問題中的原始問題被錯誤的格式化所掩蓋。堆棧溢出丟棄< and >,使得它看起來像沒有類似於SearchResult的參數,當joshua沒有以這種方式輸入問題時。 – oconnor0 2011-03-11 04:59:29

回答

0

您的類定義應該像

​​

然後:

SearchResult result = new SearchResult<String>(myListOfStrings, mycount); 

我假設,因爲myListOfStrings似乎是一個字符串,你需要定義TString

0

T的類型需要被定義爲像類或方法的東西。

在這種情況下,你可能想類型參數T添加到搜索結果類,給人這樣的:

public class SearchResult<T> { 
    // as before 
} 

,並更改實例化的東西,如:

SearchResult<String> result = new SearchResult<String>(myListOfStrings, mycount); 

編輯:最初SearchResult沒有類型參數,所以我建議添加一個。如果問題在於T必須擴展Model,那麼您將無法創建SearchResult < String>,因爲String不會擴展Model。

2

現在我修復了你的格式,很清楚發生了什麼。您聲明泛型參數爲Model,但您試圖用String參數值實例化類。我相信String不會延伸Model(無論那是什麼)。

+0

嗨特德,我糾正了編輯。其實我正在構建一個擴展Model的自定義類的List。 – joshua 2011-03-11 05:15:46