Tupleクラスを出力するSnipet

public class TupleGen {

    public static void main(String[] args) {
        for (int i = 2; i <= 3; i++) {
            System.out.print("public final class Tuple" + i + "<");
            for (int j = 1; j <= i; j++) {
                if (j > 1) {
                    System.out.print(", ");
                }
                System.out.print("T" + j);
            }
            System.out.println("> implements Serializable {");
            System.out
                    .println("    private static final long serialVersionUID = 1L;");
            for (int j = 1; j <= i; j++) {
                System.out.println("    public final T" + j + " _" + j + ";");
            }
            System.out.println();
            System.out.print("    public Tuple" + i + "(");
            for (int j = 1; j <= i; j++) {
                if (j > 1) {
                    System.out.print(", ");
                }
                System.out.print("T" + j + " _" + j + "");
            }
            System.out.println(") {");
            for (int j = 1; j <= i; j++) {
                System.out.println("        this._" + j + " = _" + j + ";");
            }
            System.out.println("    }");
            System.out.println();
            System.out.println("    public String toString() {");
            System.out.print("        return \"(\" + ");
            for (int j = 1; j <= i; j++) {
                if (j > 1) {
                    System.out.print(" + \", \" + ");
                }
                System.out.print("_" + j);
            }
            System.out.println(" + \")\";");
            System.out.println("    }");
            System.out.println("}");
        }
    }
}

出力結果

public final class Tuple2<T1, T2> implements Serializable {
    private static final long serialVersionUID = 1L;
    public final T1 _1;
    public final T2 _2;

    public Tuple2(T1 _1, T2 _2) {
        this._1 = _1;
        this._2 = _2;
    }

    public String toString() {
        return "(" + _1 + ", " + _2 + ")";
    }
}
public final class Tuple3<T1, T2, T3> implements Serializable {
    private static final long serialVersionUID = 1L;
    public final T1 _1;
    public final T2 _2;
    public final T3 _3;

    public Tuple3(T1 _1, T2 _2, T3 _3) {
        this._1 = _1;
        this._2 = _2;
        this._3 = _3;
    }

    public String toString() {
        return "(" + _1 + ", " + _2 + ", " + _3 + ")";
    }
}