package org.jvnet.jaxb2_commons.plugin.util; import java.lang.reflect.Array; import java.util.LinkedList; import java.util.List; public class ArrayUtils { private ArrayUtils() { } public static <T> T[] filter(T[] array, Predicate<T> predicate, Class<? extends T> theClass) { if (array == null) { return null; } else { final List<T> list = new LinkedList<T>(); for (T item : array) { if (predicate.evaluate(item)) { list.add(item); } } @SuppressWarnings("unchecked") final T[] newArray = (T[]) Array.newInstance(theClass, list.size()); return list.toArray(newArray); } } }