Typed Registry of key-value pairs
Java Groovy
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Generic Registry of type safe key-value pairs

Build Status

Main premise of this exercise is to devise a type-safe api for keeping and accessing generic registry of key-value pairs.

Usually such registries are implemented using some variation of Object -> Object or String -> Object mappings.

The trouble with this approach is that key-value pairs in this type of registry are essentially untyped. There is no indication in the API as to which key maps to a value of what type.

The Registry interface aims to give this type of type-safety back by binding a type of a key to the type of the value.

An example:

Registry reg = ...
Registry.Key<String> stringKey = Keys.of(String.class, "string");
reg.put(stringKey, "A string value");

Person customer = ...
Registry.Key<Person> personKey = Keys.of(Person.class, "customer");
reg.put(personKey, customer);


System.out.println(reg.get(stringKey)); // will print "A string value" to stdout
System.out.println(reg.get(personKey).getName()); // will print customer name to stdout

This library provides an interface for a Registry, base interface and implementation of a Key type and basic implementation of a registry that wraps a Map.

Main interface of the registry is quite similar to that of a Map with the following main differences:

  • get/put methods are type bound to the type of the key.
  • Additional methods to return set of the keys, values or entries by type.
  • Methods for returning sub-registries of given type.