/** * * Copyright 2020 Florian Schmaus. * * 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 org.jivesoftware.smack.util; public final class Pair { private final F first; private final S second; private Pair(F first, S second) { this.first = first; this.second = second; } public static Pair create(F first, S second) { return new Pair<>(first, second); } public static Pair createAndInitHashCode(F first, S second) { Pair pair = new Pair<>(first, second); pair.hashCode(); return pair; } public F getFirst() { return first; } public S getSecond() { return second; } private final HashCode.Cache hashCodeCache = new HashCode.Cache(); @Override public int hashCode() { return hashCodeCache.getHashCode(c -> c.append(first) .append(second) ); } @Override public boolean equals(Object object) { return EqualsUtil.equals(this, object, (e, o) -> e.append(first, o.first) .append(second, o.second) ); } }