package pl.net.bluesoft.util.lang.cquery; /** * User: POlszewski * Date: 2011-07-29 */ final class EqualityWrapper<T> { private T t; private final EqualityComparer<? super T> comparer; EqualityWrapper(EqualityComparer<? super T> comparer) { this.comparer = comparer; } public EqualityWrapper(T t, EqualityComparer<? super T> comparer) { this.t = t; this.comparer = comparer; } public T getT() { return t; } void setT(T t) { this.t = t; } public EqualityComparer<? super T> getComparer() { return comparer; } @Override public int hashCode() { return comparer.hashCode(t); } @SuppressWarnings("unchecked") @Override public boolean equals(Object obj) { return obj instanceof EqualityWrapper && comparer.equals(t, ((EqualityWrapper<T>)obj).t); } @Override public String toString() { return t.toString(); } }