001package co.codewizards.cloudstore.core.ref; 002 003import java.lang.ref.ReferenceQueue; 004import java.lang.ref.WeakReference; 005 006public class IdentityWeakReference<T> extends WeakReference<T> { 007 private final int hashCode; 008 009 public IdentityWeakReference(T o) { 010 this(o, null); 011 } 012 013 public IdentityWeakReference(T o, ReferenceQueue<T> q) { 014 super(o, q); 015 this.hashCode = (o == null) ? 0 : System.identityHashCode(o); 016 } 017 018 @Override 019 public boolean equals(final Object o) { 020 if (this == o) 021 return true; 022 023 if (!(o instanceof IdentityWeakReference<?>)) 024 return false; 025 026 final IdentityWeakReference<?> otherRef = (IdentityWeakReference<?>) o; 027 final Object thisObject = get(); 028 return (thisObject != null && thisObject == otherRef.get()); 029 } 030 031 @Override 032 public int hashCode() { 033 return hashCode; 034 } 035}