package org.cagrid.core.cache;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
public class WeakValue<V> extends WeakReference<V> {
private final int hashCode;
public WeakValue(V value) {
this(value, null);
}
public WeakValue(V value, ReferenceQueue<? super V> rq) {
super(value, rq);
hashCode = value.hashCode();
}
@Override
public int hashCode() {
return hashCode;
}
@Override
/*
* Only return true if the references are to the same object!
*/
public boolean equals(Object o) {
if (this == o)
return true;
V value = get();
if (value == null)
return false;
if (!(o instanceof WeakValue<?>))
return false;
o = ((WeakValue<?>) o).get();
return (value == o);
}
}