构造泛型类

时间:2011-03-11 04:50:49

标签: java generics

我有一个关于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,但是当我这样做时,我得到一个错误。 SearchResult result = new SearchResult<MyModel>(myListOfMyModels, mycount);

3 个答案:

答案 0 :(得分:2)

现在我修改了格式,很明显发生了什么。您声明泛型参数是扩展Model的东西,但您尝试使用String参数值实例化该类。我确信String不会延伸Model(无论是什么)。

答案 1 :(得分:0)

T的类型需要限定为类或方法。

在这种情况下,您可能希望将类型参数T添加到搜索结果类中,例如:

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

将实例化更改为:

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

编辑:最初SearchResult没有类型参数所以我建议添加一个。如果问题是T必须扩展Model,那么您将无法创建SearchResult&lt; String&gt;,因为String不会扩展Model。

答案 2 :(得分:0)

您的班级定义应该类似于

public class SearchResult<T> {

    public List<T> results ;

    public Integer count ;

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

然后:

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

我假设由于myListOfStrings似乎是一个字符串,您需要将T定义为String