
ru.progrm_jarvis.javacommons.object.valuestorage.AbstractValueStorage Maven / Gradle / Ivy
package ru.progrm_jarvis.javacommons.object.valuestorage;
import lombok.*;
import lombok.experimental.FieldDefaults;
import java.util.Map;
/**
* Abstract base for {@link ValueStorage}.
*
* @param type of keys used for identifying values
* @param type of stored values
*/
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
@FieldDefaults(level = AccessLevel.PROTECTED, makeFinal = true)
public abstract class AbstractValueStorage implements ValueStorage {
/**
* Values stored by their unique keys
*/
@NonNull Map values;
/**
* Generates a new key for storing the unique value.
*
* @return newly generated unique key
*/
protected abstract K generateNewKey();
@Override
public K storeValue(final @NonNull V value) {
val key = generateNewKey();
values.put(key, value);
return key;
}
@Override
public V retrieveValue(final K key) {
return values.get(key);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy