【发布时间】:2016-11-05 14:24:58
【问题描述】:
我很久没有编码了,对通配符失去了控制。
我有一个很好用的小功能
public static <T> ArrayList<T> GetObjects(List<?> list, Class<T> c){
ArrayList<T> objects = new ArrayList();
for(Object o : list){
if(c.isInstance(o)){
objects.add(c.cast(o));
}
}
return objects;
}
但是我希望它能够接受类列表并执行类似的操作
public static <T> ArrayList<T> GetMultipleObjects(List<?> list, List<Class<T>> classes){
ArrayList<T> objects = new ArrayList();
for(Object o : list){
for(Class c : classes){
if(c.isInstance(o)){
objects.add(c.cast(o));
}
}
}
return objects;
}
事后看来,这显然是不可能的。
【问题讨论】:
-
您对
List<Class<T>>有何期待?T只有一个类。 -
你会如何处理多个类?您只需列出所有不同类型的列表。
-
还定义“不起作用”。目前我怀疑唯一的问题是在
objects.add(c.cast(o));行中,因为c是原始Class而不是Class<T>所以cast返回Object而不是T,这是ArrayList<T> objects所期望的。 -
我看到了我的问题,ArrayList
。我将使用一个接口。 -
@TheOnlyWAR10CK93,不,不清楚。如果我通过
Arrays.asList(Integer.class, String.class),我会得到什么?List<Object>?那有什么用呢?
标签: java list object search wildcard