package org.marketcetera.core; /** * @author Graham Miller * @version $Id: MemoizedHashCombinator.java 16841 2014-02-20 19:59:04Z colin $ */ @ClassVersion("$Id: MemoizedHashCombinator.java 16841 2014-02-20 19:59:04Z colin $") //$NON-NLS-1$ public class MemoizedHashCombinator<T1, T2> extends Pair<T1, T2>{ String hashString; int hashCode; public MemoizedHashCombinator(T1 o1, T2 o2){ super(o1, o2); String s1 = o1==null ? "null" : o1.toString(); //$NON-NLS-1$ String s2 = o2==null ? "null" : o2.toString(); //$NON-NLS-1$ int len1 = s1.length(); int len2 = s2.length(); hashString = ""+len1+s1+len2+s2; //$NON-NLS-1$ hashCode = hashString.hashCode(); } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return hashString; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return hashCode; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!super.equals(obj)) { return false; } if (!(obj instanceof MemoizedHashCombinator)) { return false; } MemoizedHashCombinator<?,?> other = (MemoizedHashCombinator<?,?>) obj; if (hashString == null) { if (other.hashString != null) { return false; } } else if (!hashString.equals(other.hashString)) { return false; } return true; } }