我正在研究一种可以管理用户创建的Java数据模型的数据管理器。它有一个getter方法来返回给定类的所有对象:
public <T> Collection<T> getAllForClass(Class<T> clazz);
我还有一个过滤器对象,用于存储要过滤的数据的类。它有一个getter方法如下:
public Class<?> getFilterClass();
所以当我应用过滤器时,我想这样做:
Collection<Object> objects = dataMgr.getAllForClass(filter.getFilterClass());
编译器抱怨:
Incompatible types: Collection<CAP#1> cannot be converted to Collection<Object> where CAP#1 is a fresh type variable: CAP#1 extends Object from capture of ?.
这不起作用:
Collection<? extends Object> objects = dataMgr.getAllForClass(filter.getFilterClass());
我有预感,我需要使用Class.cast(),但我不知道如何。有人可以帮忙吗?