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 employ the same degree of locking 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 V
compute(K key, @NotNull java.util.function.BiFunction<? super K,? super V,? extends V> computeFunc)
V
computeIfAbsent(K key, @NotNull java.util.function.Function<K,V> computeFunc)
V
computeIfPresent(K key, @NotNull java.util.function.BiFunction<? super K,? super V,? extends V> computeFunc)
protected @NotNull java.lang.Object
getLock()
V
merge(K key, V value, @NotNull java.util.function.BiFunction<V,V,V> mergeFunc)
V
putIfAbsent(K key, V value)
boolean
replace(K key, V value)
boolean
replace(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()
-