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}