Skip to content

Instantly share code, notes, and snippets.

@m0er
Forked from fupfin/Tuples.java
Created April 4, 2012 10:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save m0er/2300088 to your computer and use it in GitHub Desktop.
Save m0er/2300088 to your computer and use it in GitHub Desktop.
Scala's tuple implmentation for Java
package fupfin;
public abstract class Tuples {
private Tuples() {}
public static <T1, T2> Tuple2<T1, T2> tuple2(T1 v1, T2 v2) {
return new Tuple2<T1, T2>(v1, v2);
}
public static <T1, T2, T3> Tuple3<T1, T2, T3> tuple3(T1 v1, T2 v2, T3 v3) {
return new Tuple3<T1, T2, T3>(v1, v2, v3);
}
public static <T1, T2, T3, T4> Tuple4<T1, T2, T3, T4> tuple3(T1 v1, T2 v2, T3 v3, T4 v4) {
return new Tuple4<T1, T2, T3, T4>(v1, v2, v3, v4);
}
public static class Tuple2<T1, T2> {
public final T1 v1;
public final T2 v2;
private Tuple2(T1 v1, T2 v2) {
this.v1 = v1;
this.v2 = v2;
}
}
public static class Tuple3<T1, T2, T3> {
public final T1 v1;
public final T2 v2;
public final T3 v3;
private Tuple3(T1 v1, T2 v2, T3 v3) {
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
}
}
public static class Tuple4<T1, T2, T3, T4> {
public final T1 v1;
public final T2 v2;
public final T3 v3;
public final T4 v4;
private Tuple4(T1 v1, T2 v2, T3 v3, T4 v4) {
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
this.v4 = v4;
}
}
}
package fupfin;
import static org.junit.Assert.*;
import org.junit.Test;
public class TuplesTest {
@Test
public void testTuple2() {
Tuples.Tuple2<String, Integer> result = Tuples.tuple2("a", 1);
assertEquals(result.v1, "a");
assertEquals(result.v2, new Integer(1));
}
@Test
public void testTuple3() {
Tuples.Tuple3<String, Integer, Boolean> result = Tuples.tuple3("a", 1, true);
assertEquals(result.v1, "a");
assertEquals(result.v2, new Integer(1));
assertTrue(result.v3);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment