package net.sf.cglib.core;

import java.lang.ref.WeakReference;

Allows to check for object equality, yet the class does not keep strong reference to the target. equals(Object) returns true if and only if the reference is not yet expired and target objects are equal in terms of equals(Object).

This an internal class, thus it might disappear in future cglib releases.

Type parameters:
  • <T> – type of the reference
/** * Allows to check for object equality, yet the class does not keep strong reference to the target. * {@link #equals(Object)} returns true if and only if the reference is not yet expired and target * objects are equal in terms of {@link #equals(Object)}. * <p> * This an internal class, thus it might disappear in future cglib releases. * * @param <T> type of the reference */
public class WeakCacheKey<T> extends WeakReference<T> { private final int hash; public WeakCacheKey(T referent) { super(referent); this.hash = referent.hashCode(); } @Override public boolean equals(Object obj) { if (!(obj instanceof WeakCacheKey)) { return false; } Object ours = get(); Object theirs = ((WeakCacheKey) obj).get(); return ours != null && theirs != null && ours.equals(theirs); } @Override public int hashCode() { return hash; } @Override public String toString() { T t = get(); return t == null ? "Clean WeakIdentityKey, hash: " + hash : t.toString(); } }