package org.marketcetera.core;
import javax.annotation.concurrent.Immutable;
/* $License$ */
/**
* Strongly-typed object duo.
*
* @author gmiller
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: Pair.java 16482 2013-02-05 19:56:42Z colin $
* @since 0.5.0
*/
@Immutable
@ClassVersion("$Id: Pair.java 16482 2013-02-05 19:56:42Z colin $")
public class Pair<T1, T2>
{
/**
* Creates a new <code>Pair</code> with the given attributes.
*
* @param inType1 a <code>Clazz1</code> value
* @param inType2 a <code>Clazz2</code> value
* @return a <code>Pair<Clazz1,Clazz2></code> value
*/
public static <Clazz1,Clazz2> Pair<Clazz1,Clazz2> create(Clazz1 inType1,
Clazz2 inType2)
{
return new Pair<Clazz1,Clazz2>(inType1,
inType2);
}
/**
* Create a new Pair instance.
*
* @param inFirst a <code>T1</code> value or null
* @param inSecond a <code>T2</code> value or null
*/
public Pair(T1 inFirst,
T2 inSecond)
{
firstMember = inFirst;
secondMember = inSecond;
}
/**
* Get the firstMember value.
*
* @return a <code>T1</code> value
*/
public T1 getFirstMember()
{
return firstMember;
}
/**
* Get the secondMember value.
*
* @return a <code>T2</code> value
*/
public T2 getSecondMember()
{
return secondMember;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
return String.format("%s - %s", //$NON-NLS-1$
firstMember,
secondMember);
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((firstMember == null) ? 0 : firstMember.hashCode());
result = prime * result + ((secondMember == null) ? 0 : secondMember.hashCode());
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Pair<?,?> other = (Pair<?,?>) obj;
if (firstMember == null) {
if (other.firstMember != null)
return false;
} else if (!firstMember.equals(other.firstMember))
return false;
if (secondMember == null) {
if (other.secondMember != null)
return false;
} else if (!secondMember.equals(other.secondMember))
return false;
return true;
}
private final T1 firstMember;
private final T2 secondMember;
}