iceberg icon indicating copy to clipboard operation
iceberg copied to clipboard

Replace Literals with Stateless Functions

Open omervk opened this issue 7 years ago • 0 comments

Literals are currently only used for two purposes:

  1. Type-safe casts
  2. Type-safe comparators

They are not usually needed together and whenever one is needed, a new Literal is instantiated. In a tight loop, this isn't optimal.

These could be replaced by a couple of functions (mock code):

static <From, To> Function<From, To> convert(from: Class<From>, to: Class<To>)
static <T> Comparator<T> convert(clazz: Class<T>)

These functions could be cached and lookup could be via a hashtable at O(1).

This would also have another benefit of removing a type from the domain model, simplifying UnboundPredicate and BoundPredicate's signatures.

omervk avatar Nov 13 '18 19:11 omervk