Dokumentation und umbenannte Methode

This commit is contained in:
ngb
2022-12-13 08:14:07 +01:00
parent 836571ca95
commit 6cc23de620
2 changed files with 26 additions and 9 deletions

View File

@@ -20,6 +20,12 @@ import java.util.stream.Collectors;
* Collector gelöscht worden sein kann. * Collector gelöscht worden sein kann.
* <p> * <p>
* Als interne Map wird einen {@link ConcurrentHashMap} verwendet. * Als interne Map wird einen {@link ConcurrentHashMap} verwendet.
* <p>
* Ein passender Cache wird mittels der Fabrikmethoden {@link #newSoftCache()}
* und {@link #newWeakCache()} erstellt.
* <pre><code>
* Cache&lt;String, Image&gt; imageCache = Cache.newSoftCache();
* </code></pre>
* *
* @param <K> Der Typ der Schlüssel. * @param <K> Der Typ der Schlüssel.
* @param <V> Der Typ der Objekte. * @param <V> Der Typ der Objekte.
@@ -70,10 +76,6 @@ public final class Cache<K, V> implements Map<K, V> {
return cache.isEmpty(); return cache.isEmpty();
} }
private boolean containsRef( Object key ) {
return cache.containsKey(key);
}
@Override @Override
public boolean containsKey( Object key ) { public boolean containsKey( Object key ) {
return cache.containsKey(key) && cache.get(key).get() != null; return cache.containsKey(key) && cache.get(key).get() != null;
@@ -93,17 +95,33 @@ public final class Cache<K, V> implements Map<K, V> {
return null; return null;
} }
public void nocache( K key ) { /**
* Deaktiviert das Caching für den angegebenen Schlüssel.
* <p>
* Folgende Aufrufe von {@link #put(Object, Object)} mit demselben Schlüssel
* haben keinen Effekt. Um das Caching wieder zu aktivieren, muss
* {@link #remove(Object)} mit dem Schlüssel aufgerufen werden,
*
* @param key Der Schlüssel.
*/
public void disableCache( K key ) {
cache.put(key, NOCACHE); cache.put(key, NOCACHE);
} }
public boolean isNocache( K key ) { /**
* Prüft, ob der für den angegebenen Schlüssel zuvor
* {@link #disableCache(Object)} aufgerufen wurde.
*
* @param key Der Schlüssel.
* @return {@code true}, wenn der Schlüssel nicht gespeichert wird.
*/
public boolean isCachingDisabled( K key ) {
return cache.get(key) == NOCACHE; return cache.get(key) == NOCACHE;
} }
@Override @Override
public V put( K key, V value ) { public V put( K key, V value ) {
if( !isNocache(key) ) { if( !isCachingDisabled(key) ) {
V prev = remove(key); V prev = remove(key);
cache.put(key, refSupplier.apply(value)); cache.put(key, refSupplier.apply(value));
return prev; return prev;

View File

@@ -16,7 +16,6 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.ref.SoftReference; import java.lang.ref.SoftReference;
import java.util.Map;
/** /**
* Eine Helferklasse mit Klassenmethoden, um Bilder zu laden. * Eine Helferklasse mit Klassenmethoden, um Bilder zu laden.
@@ -190,7 +189,7 @@ public final class ImageLoader {
* @param name Die Quelle des Bildes. * @param name Die Quelle des Bildes.
*/ */
public static void preventCache( final String name ) { public static void preventCache( final String name ) {
imageCache.nocache(name); imageCache.disableCache(name);
} }
/** /**