package net.violet.platform.vasm;
/**
* Classe pour une paire immutable d'éléments non nul.
*
* @param <E1> type du premier élément.
* @param <E2> type du second élément.
*/
public class Pair<E1, E2> {
private E1 firstElement;
private E2 secondElement;
public Pair(E1 inFirstElement, E2 inSecondElement) {
this(inFirstElement, inSecondElement, true);
}
public Pair(E1 inFirstElement, E2 inSecondElement, boolean throwNull) {
if ((inFirstElement == null) && throwNull) {
throw new NullPointerException("first element is null");
}
this.firstElement = inFirstElement;
this.secondElement = inSecondElement;
}
public E1 getFirst() {
return this.firstElement;
}
public E2 getSecond() {
return this.secondElement;
}
@Override
public String toString() {
return "{" + this.firstElement + ", " + this.secondElement + "}";
}
@Override
public int hashCode() {
return this.firstElement.hashCode() * 17 + this.secondElement.hashCode();
}
@Override
public boolean equals(Object inAlter) {
if (!(inAlter instanceof Pair)) {
return false;
}
final Pair alterAsPair = (Pair) inAlter;
return alterAsPair.firstElement.equals(this.firstElement) && (((alterAsPair.secondElement == null) && (this.secondElement == null)) || ((alterAsPair.secondElement != null) && alterAsPair.secondElement.equals(this.secondElement)));
}
public void setFirst(E1 firstElement) {
this.firstElement = firstElement;
}
public void setSecond(E2 secondElement) {
this.secondElement = secondElement;
}
}