/***************************************************************************** * Copyright (C) Codehaus.org * * ------------------------------------------------------------------------- * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * *****************************************************************************/ package net.ion.rosetta.functors; import net.ion.rosetta.util.Objects; /** * Immutable data holder for 2 values. * * @author Ben Yu */ public class Pair<A, B> { public final A a; public final B b; public Pair(A a, B b) { this.a = a; this.b = b; } boolean equals(Pair<?, ?> other) { return Objects.equals(a, other.a) && Objects.equals(b, other.b); } @Override public boolean equals(Object obj) { if (obj instanceof Pair<?, ?>) { return equals((Pair<?, ?>) obj); } return false; } @Override public int hashCode() { return Objects.hashCode(a) * 31 + Objects.hashCode(b); } @Override public String toString() { return "(" + a + ", " + b + ")"; } }