Skip to content

yunan9/pointers

Repository files navigation

pointers

Java Version License Build Maven Central Javadoc

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.


Features

  • 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

Installation

dependencies {
    implementation("io.github.yunan9:pointers:<version>")
}
<dependency>
  <groupId>io.github.yunan9</groupId>
  <artifactId>pointers</artifactId>
  <version>VERSION_HERE</version>
</dependency>

Quick Example

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 int

API Overview

Create a typed key

PointerKey<Boolean> enabledPointerKey =
    PointerKey.newPointerKey("enabled", boolean.class);

Register a pointer (lazy)

store.registerPointer(enabledPointerKey, () -> checkDatabaseFlag());

Register a pointer (manual)

Pointer<Boolean> pointer = Pointer.newPointer(enabledPointerKey, () -> true);
store.registerPointer(pointer);

Remove

store.removePointer(enabledPointerKey);

List pointers

var pointers = store.pointers();
pointers.forEach(pointer -> {
    System.out.println(pointer.key().reference());
});

Thread Safety

Store Backing Thread-safe
newPointerStore() HashMap ❌ No
newConcurrentPointerStore() ConcurrentHashMap ✅ Yes

License

MIT. See LICENSE.


About

Lightweight and type-safe pointer registry inspired by Adventure’s Pointer API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages