package ilarkesto.base; /** * Tuple of two objects. */ public final class Tuple<A, B> { private A a; private B b; public Tuple(A a, B b) { this.a = a; this.b = b; } public A getA() { return a; } public B getB() { return b; } public void setA(A a) { this.a = a; } public void setB(B b) { this.b = b; } @Override public boolean equals(Object obj) { if (obj == null || !(obj instanceof Tuple)) return false; Tuple<A, B> other = (Tuple<A, B>) obj; return Sys.equals(a, other.a) && Sys.equals(b, other.b); } @Override public int hashCode() { int hash = 1; hash = hash * 31 + (a == null ? 0 : a.hashCode()); hash = hash * 31 + (b == null ? 0 : b.hashCode()); return hash; } @Override public String toString() { return new StringBuilder().append('<').append(a).append(',').append(b).append('>').toString(); } }