package net.varkhan.base.functor.reducer; import net.varkhan.base.functor.Reducer; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; /** * <b></b>. * <p/> * @author varkhan * @date 11/5/13 * @time 5:14 PM */ public class ArrayReducer<T,C> implements Reducer<T[],T,C> { protected final Class<T> cls; public ArrayReducer(Class<T> cls) { this.cls=cls; } @Override @SuppressWarnings("unchecked") public T[] invoke(Iterable<T> src, C ctx) { List<T> lst=new ArrayList<T>(); for(T val : src) lst.add(val); return lst.toArray((T[])Array.newInstance(cls, lst.size())); } @Override public String toString() { return "$"; } }