A tiny, type-safe library for storing and retrieving lazily-evaluated values using typed keys. Designed for registries, plugin systems, dynamic configuration layers, and dependency graphs.
- Typed keys:
PointerKey<T> - Lazy or eager values: via
Supplier<T> - Thread-safe or non-thread-safe stores
- Zero reflection, zero overhead
- Clean, sealed, null-annotated API
dependencies {
implementation("io.github.yunan9:pointers:<version>")
}<dependency>
<groupId>io.github.yunan9</groupId>
<artifactId>pointers</artifactId>
<version>VERSION_HERE</version>
</dependency>import io.github.yunan9.pointer.Pointer;
import io.github.yunan9.pointer.key.PointerKey;
import io.github.yunan9.pointer.store.PointerStore;
PointerKey<String> NAME_POINTER_KEY = PointerKey.newPointerKey("name", String.class);
PointerKey<Integer> LEVEL_POINTER_KEY = PointerKey.newPointerKey("level", int.class);
PointerStore store = PointerStore.newConcurrentPointerStore();
store.registerPointer(NAME_POINTER_KEY, () -> "Steve");
store.registerPointer(LEVEL_POINTER_KEY, () -> computeLevel());
// Retrieve
String name = store.getPointer(NAME_POINTER_KEY).value(); // "Steve"
int level = store.getPointer(LEVEL_POINTER_KEY).value(); // computed intPointerKey<Boolean> enabledPointerKey =
PointerKey.newPointerKey("enabled", boolean.class);store.registerPointer(enabledPointerKey, () -> checkDatabaseFlag());Pointer<Boolean> pointer = Pointer.newPointer(enabledPointerKey, () -> true);
store.registerPointer(pointer);store.removePointer(enabledPointerKey);var pointers = store.pointers();
pointers.forEach(pointer -> {
System.out.println(pointer.key().reference());
});| Store | Backing | Thread-safe |
|---|---|---|
newPointerStore() |
HashMap |
❌ No |
newConcurrentPointerStore() |
ConcurrentHashMap |
✅ Yes |
MIT. See LICENSE.