我写了一个泛型方法,但我不知道如何以编程方式告诉List
它必须包含的对象类型。
我读到我无法知道<T>
对象类,所以我在方法中添加了另一个参数(returnClass)。
public <T extends IModel> List<T> getIModel(Cursor cursor, Class<T> returnClass){
//returnClass is the class that List must contains.
//I need something like this
List<returnClass.getClass()> list = new ArrayList<>();
list.add(new Photo());
}
这些是我的“模特”课
public class Media implements IModel{}
public class Photo extends Media{}
我不能这样做:
List<T> list = new ArrayList<>();
list.add(new Photo());
因为List<T>
只确定List
是List
扩展IModel
的对象,我在执行list.add(new Photo())
时会收到错误,因为List
期待T而我正在添加Photo
。
我需要的是确定Imodel
内的List
的子类。
答案 0 :(得分:0)
你应该使用类似的东西:
public <T extends IModel> List<T> getIModel(Cursor cursor){
List<T> t = new ArrayList<T>();
return t;
}
聚苯乙烯。您不需要Class<T> returnClass
。
并获取列表类型,您可以检查第一个元素:
if(list.size()==0){
// any type
} else if(if(list.get(0) instanceof Photo){
// you can insert only the Photo
} else if(...){
// do some stuff
}