package org.jboss.util.collection;
import java.io.Serializable;
import org.jboss.util.NullArgumentException;
import org.jboss.util.Objects;
import org.jboss.util.HashCode;
import org.jboss.util.Strings;
public class CompoundKey
implements Serializable, Cloneable
{
static final long serialVersionUID = -1181463173922935047L;
private final Object elements[];
public CompoundKey(final Object elements[]) {
if (elements == null)
throw new NullArgumentException("elements");
this.elements = elements;
}
public CompoundKey(final Object a, final Object b) {
this(new Object[] { a, b });
}
public CompoundKey(final Object a, final Object b, final Object c) {
this(new Object[] { a, b, c });
}
public boolean equals(final Object obj) {
if (obj == this) return true;
if (obj != null && obj.getClass() == getClass()) {
CompoundKey key = (CompoundKey)obj;
return Objects.equals(key.elements, elements);
}
return false;
}
public int hashCode() {
return HashCode.generate(elements);
}
public String toString() {
return super.toString() + Strings.join(elements, "[", ",", "]");
}
public Object clone() {
try {
return super.clone();
}
catch (CloneNotSupportedException e) {
throw new InternalError();
}
}
}