All Downloads are FREE. Search and download functionalities are using the official Maven repository.

co.cask.common.ImmutablePair Maven / Gradle / Ivy

There is a newer version: 0.11.0
Show newest version
/*
 * Copyright © 2014 Cask Data, Inc.
 *
 * 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 co.cask.common;

import com.google.common.base.Objects;

/**
 * An {@link ImmutablePair} consists of two elements within. The elements once set
 * in the ImmutablePair cannot be modified. The class itself is final, so that it
 * cannot be subclassed. This is general norm for creating Immutable classes.
 * Please note that the {@link ImmutablePair} cannot be modified once set, but the
 * objects within them can be, so in general it means that if there are mutable objects
 * within the pair then the pair itself is effectively mutable.
 *
 * 
 *   ImmutablePair tupleStreamPair= new
 *    ImmutablePair (tuple, identifier);
 *   ...
 *   ...
 *   Tuple t = tupleStreamPair.getFirst();
 *   TupleInputStreamIdentifier identifier = tupleStreamPair.getSecond();
 *   ...
 * 
* * @param type A * @param type B */ public final class ImmutablePair { private final A first; private final B second; public static ImmutablePair of(A first, B second) { return new ImmutablePair(first, second); } /** * Constructs a Immutable Pair. * @param first object in pair * @param second object in pair */ public ImmutablePair(A first, B second) { this.first = first; this.second = second; } /** * Returns first object from pair. * @return first object from pair. */ public A getFirst() { return first; } /** * Return second object from pair. * @return second object from pair. */ public B getSecond() { return second; } /** * Returns a string representation of {@link ImmutablePair} object. * @return string representation of this object. */ @Override public String toString() { return Objects.toStringHelper(this) .add("first", first) .add("second", second) .toString(); } /** * Returns a hash code value for this object. * @return hash code value of this object. */ @Override public int hashCode() { return Objects.hashCode(first, second); } /** * Returns whether some other object "is equal" to this object. * @param o reference object with which to compare * @return true if object is the same as the obj argument; false otherwise. */ @Override public boolean equals(Object o) { if (o == null) { return false; } if (!(o instanceof ImmutablePair)) { return false; } ImmutablePair other = (ImmutablePair) o; return Objects.equal(first, other.first) && Objects.equal(second, other.second); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy