package squill.tuple; import java.util.Arrays; public class TupleFactory { private TupleFactory() {} @SuppressWarnings({"unchecked"}) public static <T extends Tuple> T tupleFrom(final Object...values) { switch(values.length) { case 1 : return (T) new Tuple1(values[0]); case 2 : return (T) new Tuple2(values[0],values[1]); case 3 : return (T) new Tuple3(values[0],values[1],values[2]); case 4 : return (T) new Tuple4(values[0],values[1],values[2],values[3]); case 5 : return (T) new Tuple5(values[0],values[1],values[2],values[3],values[4]); case 6 : return (T) new Tuple6(values[0],values[1],values[2],values[3],values[4],values[5]); case 7 : return (T) new Tuple7(values[0],values[1],values[2],values[3],values[4],values[5],values[6]); case 8 : return (T) new Tuple8(values[0],values[1],values[2],values[3],values[4],values[5],values[6],values[7]); case 9 : return (T) new Tuple9(values[0],values[1],values[2],values[3],values[4],values[5],values[6],values[7],values[8]); case 10 : return (T) new Tuple10(values[0],values[1],values[2],values[3],values[4],values[5],values[6],values[7],values[8],values[9]); default: throw new IllegalArgumentException("No Tuple available for "+ Arrays.asList(values)); } } }