我有一个关于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);
答案 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