Mercurial Hosting > luan
diff src/goodjava/util/SoftCacheMap.java @ 1498:1b809d2fdf03
add CacheMap
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 08 May 2020 18:07:14 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/goodjava/util/SoftCacheMap.java Fri May 08 18:07:14 2020 -0600 @@ -0,0 +1,35 @@ +package goodjava.util; + +import java.lang.ref.ReferenceQueue; +import java.lang.ref.SoftReference; + + +public final class SoftCacheMap<K,V> extends CacheMap<K,V> { + + static final class MySoftReference<K,V> extends SoftReference<V> implements MyReference<K,V> { + private final K key; + + MySoftReference(K key,V value,ReferenceQueue<V> q) { + super(value,q); + this.key = key; + } + + public K key() { + return key; + } + + public boolean equals(Object obj) { + Object o = this.get(); + if( o==null ) + return false; + SoftReference ref = (SoftReference)obj; + return o.equals(ref.get()); + } + + } + + protected MyReference<K,V> newReference(K key,V value,ReferenceQueue<V> q) { + return new MySoftReference<K,V>(key,value,q); + } + +}