package net.varkhan.base.functor.mapper; import net.varkhan.base.functor.Mapper; /** * <b></b>. * <p/> * * @author varkhan * @date 4/7/12 * @time 6:00 PM */ public class ArrayMapper<R,A,C> implements Mapper<R[],A,C> { protected final Mapper<R,A,C>[] maps; public ArrayMapper(Mapper<R,A,C>... maps) { this.maps = maps; } @SuppressWarnings({ "unchecked" }) public R[] invoke(A arg, C ctx) { R[] res = (R[]) new Object[maps.length]; for(int i=0; i<maps.length; i++) res[i] = maps[i].invoke(arg,ctx); return res; } @Override public String toString() { StringBuilder buf = new StringBuilder(); boolean f = true; for(Mapper<R,A,C> m: maps) { if(f) f = false; else buf.append(','); buf.append(m.toString()); } return buf.toString(); } }