我想编写一个帮助方法,它将返回一个对象集合的通用类型子集合,但我需要一些帮助!
以下是我想要的方式:
public static <T> Collection<T> getTypeFilteredSubCollection(Collection<Object> objects) {
Collection<T> typeFilteredCollection = new ArrayList<T>();
for(Object object : objects) {
if(object instanceof T) {
typeFilteredCollection.add((T)object);
}
}
return typeFilteredCollection;
}
显而易见的问题是泛型类型将在运行时消失,但您可以了解我想要做的事情。
有没有人知道如何实现这样的东西?
答案 0 :(得分:1)
您必须同时传递T
的课程并使用Class::isAssignableFrom
:
public static <T> Collection<T> getTypeFilteredSubCollection(Collection<Object> objects, Class<T> clazz) {
Collection<T> typeFilteredCollection = new ArrayList<T>();
for(Object object : objects) {
if(clazz.isInstance(object)) {
typeFilteredCollection.add((T)object);
}
}
return typeFilteredCollection;
}