| 1498 | 1 package goodjava.util; | 
|  | 2 | 
|  | 3 import java.lang.ref.ReferenceQueue; | 
|  | 4 import java.lang.ref.WeakReference; | 
|  | 5 | 
|  | 6 | 
|  | 7 public class WeakCacheMap<K,V> extends CacheMap<K,V> { | 
|  | 8 | 
|  | 9 	static final class MyWeakReference<K,V> extends WeakReference<V> implements MyReference<K,V> { | 
|  | 10 		private final K key; | 
|  | 11 | 
|  | 12 		MyWeakReference(K key,V value,ReferenceQueue<V> q) { | 
|  | 13 			super(value,q); | 
|  | 14 			this.key = key; | 
|  | 15 		} | 
|  | 16 | 
|  | 17 		public K key() { | 
|  | 18 			return key; | 
|  | 19 		} | 
|  | 20 | 
|  | 21 		public boolean equals(Object obj) { | 
|  | 22 			Object o = this.get(); | 
|  | 23 			if( o==null ) | 
|  | 24 				return false; | 
|  | 25 			WeakReference ref = (WeakReference)obj; | 
|  | 26 			return o.equals(ref.get()); | 
|  | 27 		} | 
|  | 28 | 
|  | 29 	} | 
|  | 30 | 
|  | 31 	protected MyReference<K,V> newReference(K key,V value,ReferenceQueue<V> q) { | 
|  | 32 		return new MyWeakReference<K,V>(key,value,q); | 
|  | 33 	} | 
|  | 34 | 
|  | 35 } |