我想编写一个辅助方法,该方法将返回对象集合的通用类型子集合,但我需要一些帮助!
这是我想要的方法:
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;
}
明显的问题是泛型类型会在运行时消失,但你明白我想要做什么。
有人知道如何实现这样的事情吗?
最佳答案
您必须将 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;
}
关于java - 集合的通用类型子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38134174/