Package io.github.xanthic.cache.core
Class AbstractCache<K,V>
java.lang.Object
io.github.xanthic.cache.core.AbstractCache<K,V>
- Type Parameters:
K- The type of keys that form the cacheV- The type of values contained in the cache
- All Implemented Interfaces:
io.github.xanthic.cache.api.Cache<K,V>
public abstract class AbstractCache<K,V>
extends java.lang.Object
implements io.github.xanthic.cache.api.Cache<K,V>
Provides a common implementation of:
Cache.computeIfAbsent(Object, Function)Cache.putIfAbsent(Object, Object)Cache.merge(Object, Object, BiFunction)
Subclasses ought to synchronize on getLock() for correctness.
Avoid this abstraction if the backing cache provider already provides an implementation for these methods.
Does not support null values.
-
Constructor Summary
Constructors Constructor Description AbstractCache() -
Method Summary
Modifier and Type Method Description Vcompute(K key, @NotNull java.util.function.BiFunction<? super K,? super V,? extends V> computeFunc)VcomputeIfAbsent(K key, @NotNull java.util.function.Function<K,V> computeFunc)VcomputeIfPresent(K key, @NotNull java.util.function.BiFunction<? super K,? super V,? extends V> computeFunc)protected @NotNull java.lang.ObjectgetLock()Vmerge(K key, V value, @NotNull java.util.function.BiFunction<V,V,V> mergeFunc)VputIfAbsent(K key, V value)booleanreplace(K key, V value)booleanreplace(K key, V oldValue, V newValue)
-
Constructor Details
-
AbstractCache
public AbstractCache()
-
-
Method Details
-
computeIfAbsent
-
compute
-
computeIfPresent
-
putIfAbsent
-
merge
-
replace
-
replace
-
getLock
@NotNull protected @NotNull java.lang.Object getLock()
-