在Java中按类获取子列表

sdg*_*sdh 1 java generics list subclass

假设我有一个

ArrayList<Fruit>
Run Code Online (Sandbox Code Playgroud)

我想获得Fruit的任何给定子类的列表中的所有元素,例如

ArrayList<Apple>
Run Code Online (Sandbox Code Playgroud)

C#似乎有一个相当方便

OfType<T>() 
Run Code Online (Sandbox Code Playgroud)

方法.在Java中有没有相同的方法呢?

干杯

Mar*_*nik 5

public static <T> Collection<T> ofType(Collection<? super T> col, Class<T> type) {
  final List<T> ret = new ArrayList<T>();
  for (Object o : col) if (type.isInstance(o)) ret.add((T)o);
  return ret;
}
Run Code Online (Sandbox Code Playgroud)