package org.cagrid.core.cache; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; public class WeakKey<K> extends WeakReference<K> { private final int hashCode; public WeakKey(K key) { this(key, null); } public WeakKey(K key, ReferenceQueue<? super K> rq) { super(key, rq); hashCode = key.hashCode(); } @Override public int hashCode() { return hashCode; } @Override public boolean equals(Object o) { if (this == o) return true; K key = get(); if (key == null) return false; if (!(o instanceof WeakKey<?>)) return false; o = ((WeakKey<?>) o).get(); return key.equals(o); } }